more accurate effects for times.nim; bugfix for the JS codegen
This commit is contained in:
parent
ddedefd4c4
commit
2ec3e6b49e
2 changed files with 54 additions and 52 deletions
|
|
@ -1027,7 +1027,7 @@ proc genConstant(p: PProc, c: PSym) =
|
||||||
if lfNoDecl notin c.loc.flags and not p.g.generatedSyms.containsOrIncl(c.id):
|
if lfNoDecl notin c.loc.flags and not p.g.generatedSyms.containsOrIncl(c.id):
|
||||||
let oldBody = p.body
|
let oldBody = p.body
|
||||||
p.body = nil
|
p.body = nil
|
||||||
genLineDir(p, c.ast)
|
#genLineDir(p, c.ast)
|
||||||
genVarInit(p, c, c.ast)
|
genVarInit(p, c, c.ast)
|
||||||
app(p.g.code, p.body)
|
app(p.g.code, p.body)
|
||||||
p.body = oldBody
|
p.body = oldBody
|
||||||
|
|
|
||||||
|
|
@ -62,44 +62,44 @@ elif defined(windows):
|
||||||
elif defined(JS):
|
elif defined(JS):
|
||||||
type
|
type
|
||||||
TTime* {.final, importc.} = object
|
TTime* {.final, importc.} = object
|
||||||
getDay: proc (): int {.tags: [].}
|
getDay: proc (): int {.tags: [], raises: [].}
|
||||||
getFullYear: proc (): int {.tags: [].}
|
getFullYear: proc (): int {.tags: [], raises: [].}
|
||||||
getHours: proc (): int {.tags: [].}
|
getHours: proc (): int {.tags: [], raises: [].}
|
||||||
getMilliseconds: proc (): int {.tags: [].}
|
getMilliseconds: proc (): int {.tags: [], raises: [].}
|
||||||
getMinutes: proc (): int {.tags: [].}
|
getMinutes: proc (): int {.tags: [], raises: [].}
|
||||||
getMonth: proc (): int {.tags: [].}
|
getMonth: proc (): int {.tags: [], raises: [].}
|
||||||
getSeconds: proc (): int {.tags: [].}
|
getSeconds: proc (): int {.tags: [], raises: [].}
|
||||||
getTime: proc (): int {.tags: [].}
|
getTime: proc (): int {.tags: [], raises: [].}
|
||||||
getTimezoneOffset: proc (): int {.tags: [].}
|
getTimezoneOffset: proc (): int {.tags: [], raises: [].}
|
||||||
getDate: proc (): int {.tags: [].}
|
getDate: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCDate: proc (): int {.tags: [].}
|
getUTCDate: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCFullYear: proc (): int {.tags: [].}
|
getUTCFullYear: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCHours: proc (): int {.tags: [].}
|
getUTCHours: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCMilliseconds: proc (): int {.tags: [].}
|
getUTCMilliseconds: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCMinutes: proc (): int {.tags: [].}
|
getUTCMinutes: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCMonth: proc (): int {.tags: [].}
|
getUTCMonth: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCSeconds: proc (): int {.tags: [].}
|
getUTCSeconds: proc (): int {.tags: [], raises: [].}
|
||||||
getUTCDay: proc (): int {.tags: [].}
|
getUTCDay: proc (): int {.tags: [], raises: [].}
|
||||||
getYear: proc (): int {.tags: [].}
|
getYear: proc (): int {.tags: [], raises: [].}
|
||||||
parse: proc (s: cstring): TTime {.tags: [].}
|
parse: proc (s: cstring): TTime {.tags: [], raises: [].}
|
||||||
setDate: proc (x: int) {.tags: [].}
|
setDate: proc (x: int) {.tags: [], raises: [].}
|
||||||
setFullYear: proc (x: int) {.tags: [].}
|
setFullYear: proc (x: int) {.tags: [], raises: [].}
|
||||||
setHours: proc (x: int) {.tags: [].}
|
setHours: proc (x: int) {.tags: [], raises: [].}
|
||||||
setMilliseconds: proc (x: int) {.tags: [].}
|
setMilliseconds: proc (x: int) {.tags: [], raises: [].}
|
||||||
setMinutes: proc (x: int) {.tags: [].}
|
setMinutes: proc (x: int) {.tags: [], raises: [].}
|
||||||
setMonth: proc (x: int) {.tags: [].}
|
setMonth: proc (x: int) {.tags: [], raises: [].}
|
||||||
setSeconds: proc (x: int) {.tags: [].}
|
setSeconds: proc (x: int) {.tags: [], raises: [].}
|
||||||
setTime: proc (x: int) {.tags: [].}
|
setTime: proc (x: int) {.tags: [], raises: [].}
|
||||||
setUTCDate: proc (x: int) {.tags: [].}
|
setUTCDate: proc (x: int) {.tags: [], raises: [].}
|
||||||
setUTCFullYear: proc (x: int) {.tags: [].}
|
setUTCFullYear: proc (x: int) {.tags: [], raises: [].}
|
||||||
setUTCHours: proc (x: int) {.tags: [].}
|
setUTCHours: proc (x: int) {.tags: [], raises: [].}
|
||||||
setUTCMilliseconds: proc (x: int) {.tags: [].}
|
setUTCMilliseconds: proc (x: int) {.tags: [], raises: [].}
|
||||||
setUTCMinutes: proc (x: int) {.tags: [].}
|
setUTCMinutes: proc (x: int) {.tags: [], raises: [].}
|
||||||
setUTCMonth: proc (x: int) {.tags: [].}
|
setUTCMonth: proc (x: int) {.tags: [], raises: [].}
|
||||||
setUTCSeconds: proc (x: int) {.tags: [].}
|
setUTCSeconds: proc (x: int) {.tags: [], raises: [].}
|
||||||
setYear: proc (x: int) {.tags: [].}
|
setYear: proc (x: int) {.tags: [], raises: [].}
|
||||||
toGMTString: proc (): cstring {.tags: [].}
|
toGMTString: proc (): cstring {.tags: [], raises: [].}
|
||||||
toLocaleString: proc (): cstring {.tags: [].}
|
toLocaleString: proc (): cstring {.tags: [], raises: [].}
|
||||||
|
|
||||||
type
|
type
|
||||||
TTimeInfo* = object of TObject ## represents a time in different parts
|
TTimeInfo* = object of TObject ## represents a time in different parts
|
||||||
|
|
@ -139,10 +139,10 @@ proc getTime*(): TTime {.tags: [FTime].}
|
||||||
## gets the current calendar time as a UNIX epoch value (number of seconds
|
## gets the current calendar time as a UNIX epoch value (number of seconds
|
||||||
## elapsed since 1970) with integer precission. Use epochTime for higher
|
## elapsed since 1970) with integer precission. Use epochTime for higher
|
||||||
## resolution.
|
## resolution.
|
||||||
proc getLocalTime*(t: TTime): TTimeInfo {.tags: [FTime].}
|
proc getLocalTime*(t: TTime): TTimeInfo {.tags: [FTime], raises: [].}
|
||||||
## converts the calendar time `t` to broken-time representation,
|
## converts the calendar time `t` to broken-time representation,
|
||||||
## expressed relative to the user's specified time zone.
|
## expressed relative to the user's specified time zone.
|
||||||
proc getGMTime*(t: TTime): TTimeInfo {.tags: [FTime].}
|
proc getGMTime*(t: TTime): TTimeInfo {.tags: [FTime], raises: [].}
|
||||||
## converts the calendar time `t` to broken-down time representation,
|
## converts the calendar time `t` to broken-down time representation,
|
||||||
## expressed in Coordinated Universal Time (UTC).
|
## expressed in Coordinated Universal Time (UTC).
|
||||||
|
|
||||||
|
|
@ -152,46 +152,48 @@ proc TimeInfoToTime*(timeInfo: TTimeInfo): TTime {.tags: [].}
|
||||||
## contents of the structure members `weekday` and `yearday` and recomputes
|
## contents of the structure members `weekday` and `yearday` and recomputes
|
||||||
## them from the other information in the broken-down time structure.
|
## them from the other information in the broken-down time structure.
|
||||||
|
|
||||||
proc fromSeconds*(since1970: float): TTime {.tags: [].}
|
proc fromSeconds*(since1970: float): TTime {.tags: [], raises: [].}
|
||||||
## Takes a float which contains the number of seconds since the unix epoch and
|
## Takes a float which contains the number of seconds since the unix epoch and
|
||||||
## returns a time object.
|
## returns a time object.
|
||||||
|
|
||||||
proc fromSeconds*(since1970: int|int64): TTime = fromSeconds(float(since1970))
|
proc fromSeconds*(since1970: int64): TTime {.tags: [], raises: [].} =
|
||||||
## Takes an int which contains the number of seconds since the unix epoch and
|
## Takes an int which contains the number of seconds since the unix epoch and
|
||||||
## returns a time object.
|
## returns a time object.
|
||||||
|
fromSeconds(float(since1970))
|
||||||
|
|
||||||
proc toSeconds*(time: TTime): float {.tags: [].}
|
proc toSeconds*(time: TTime): float {.tags: [], raises: [].}
|
||||||
## Returns the time in seconds since the unix epoch.
|
## Returns the time in seconds since the unix epoch.
|
||||||
|
|
||||||
proc `$` *(timeInfo: TTimeInfo): string {.tags: [].}
|
proc `$` *(timeInfo: TTimeInfo): string {.tags: [], raises: [].}
|
||||||
## converts a `TTimeInfo` object to a string representation.
|
## converts a `TTimeInfo` object to a string representation.
|
||||||
proc `$` *(time: TTime): string {.tags: [].}
|
proc `$` *(time: TTime): string {.tags: [], raises: [].}
|
||||||
## converts a calendar time to a string representation.
|
## converts a calendar time to a string representation.
|
||||||
|
|
||||||
proc `-`*(a, b: TTime): int64 {.
|
proc `-`*(a, b: TTime): int64 {.
|
||||||
rtl, extern: "ntDiffTime".}
|
rtl, extern: "ntDiffTime", tags: [], raises: [].}
|
||||||
## computes the difference of two calendar times. Result is in seconds.
|
## computes the difference of two calendar times. Result is in seconds.
|
||||||
|
|
||||||
proc `<`*(a, b: TTime): bool {.
|
proc `<`*(a, b: TTime): bool {.
|
||||||
rtl, extern: "ntLtTime".} =
|
rtl, extern: "ntLtTime", tags: [], raises: [].} =
|
||||||
## returns true iff ``a < b``, that is iff a happened before b.
|
## returns true iff ``a < b``, that is iff a happened before b.
|
||||||
result = a - b < 0
|
result = a - b < 0
|
||||||
|
|
||||||
proc `<=` * (a, b: TTime): bool {.
|
proc `<=` * (a, b: TTime): bool {.
|
||||||
rtl, extern: "ntLeTime".}=
|
rtl, extern: "ntLeTime", tags: [], raises: [].}=
|
||||||
## returns true iff ``a <= b``.
|
## returns true iff ``a <= b``.
|
||||||
result = a - b <= 0
|
result = a - b <= 0
|
||||||
|
|
||||||
proc `==`*(a, b: TTime): bool {.rtl, extern: "ntEqTime".} =
|
proc `==`*(a, b: TTime): bool {.
|
||||||
|
rtl, extern: "ntEqTime", tags: [], raises: [].} =
|
||||||
## returns true if ``a == b``, that is if both times represent the same value
|
## returns true if ``a == b``, that is if both times represent the same value
|
||||||
result = a - b == 0
|
result = a - b == 0
|
||||||
|
|
||||||
when not defined(JS):
|
when not defined(JS):
|
||||||
proc getTzname*(): tuple[nonDST, DST: string] {.tags: [FTime].}
|
proc getTzname*(): tuple[nonDST, DST: string] {.tags: [FTime], raises: [].}
|
||||||
## returns the local timezone; ``nonDST`` is the name of the local non-DST
|
## returns the local timezone; ``nonDST`` is the name of the local non-DST
|
||||||
## timezone, ``DST`` is the name of the local DST timezone.
|
## timezone, ``DST`` is the name of the local DST timezone.
|
||||||
|
|
||||||
proc getTimezone*(): int {.tags: [FTime].}
|
proc getTimezone*(): int {.tags: [FTime], raises: [].}
|
||||||
## returns the offset of the local (non-DST) timezone in seconds west of UTC.
|
## returns the offset of the local (non-DST) timezone in seconds west of UTC.
|
||||||
|
|
||||||
proc getStartMilsecs*(): int {.deprecated, tags: [FTime].}
|
proc getStartMilsecs*(): int {.deprecated, tags: [FTime].}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue