Correct all eggs (#15906)
* "eg" is a misspelled "egg", "e.g." is "exempli gratia" * Also, "ie" is "i.e.".
This commit is contained in:
parent
bc3c0487d3
commit
bbe49a14ae
26 changed files with 38 additions and 38 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
# build development version of the compiler; can be rerun safely.
|
# build development version of the compiler; can be rerun safely.
|
||||||
# arguments can be passed, eg `--os freebsd`
|
# arguments can be passed, e.g. `--os freebsd`
|
||||||
|
|
||||||
set -u # error on undefined variables
|
set -u # error on undefined variables
|
||||||
set -e # exit on first error
|
set -e # exit on first error
|
||||||
|
|
@ -24,7 +24,7 @@ build_nim_csources(){
|
||||||
# avoid changing dir in case of failure
|
# avoid changing dir in case of failure
|
||||||
(
|
(
|
||||||
if [ $# -ne 0 ]; then
|
if [ $# -ne 0 ]; then
|
||||||
# some args were passed (eg: `--cpu i386`), need to call build.sh
|
# some args were passed (e.g.: `--cpu i386`), need to call build.sh
|
||||||
build_nim_csources_via_script "$@"
|
build_nim_csources_via_script "$@"
|
||||||
else
|
else
|
||||||
# no args, use multiple Make jobs (5X faster on 16 cores: 10s instead of 50s)
|
# no args, use multiple Make jobs (5X faster on 16 cores: 10s instead of 50s)
|
||||||
|
|
|
||||||
|
|
@ -260,7 +260,7 @@ proc mainCommand*(graph: ModuleGraph) =
|
||||||
conf.setNoteDefaults(warnLockLevel, false) # issue #13218
|
conf.setNoteDefaults(warnLockLevel, false) # issue #13218
|
||||||
conf.setNoteDefaults(warnRedefinitionOfLabel, false) # issue #13218
|
conf.setNoteDefaults(warnRedefinitionOfLabel, false) # issue #13218
|
||||||
# because currently generates lots of false positives due to conflation
|
# because currently generates lots of false positives due to conflation
|
||||||
# of labels links in doc comments, eg for random.rand:
|
# of labels links in doc comments, e.g. for random.rand:
|
||||||
# ## * `rand proc<#rand,Rand,Natural>`_ that returns an integer
|
# ## * `rand proc<#rand,Rand,Natural>`_ that returns an integer
|
||||||
# ## * `rand proc<#rand,Rand,range[]>`_ that returns a float
|
# ## * `rand proc<#rand,Rand,range[]>`_ that returns a float
|
||||||
commandDoc2(graph, false)
|
commandDoc2(graph, false)
|
||||||
|
|
|
||||||
|
|
@ -233,11 +233,11 @@ template toFullPathConsiderDirty*(conf: ConfigRef; info: TLineInfo): string =
|
||||||
string toFullPathConsiderDirty(conf, info.fileIndex)
|
string toFullPathConsiderDirty(conf, info.fileIndex)
|
||||||
|
|
||||||
type FilenameOption* = enum
|
type FilenameOption* = enum
|
||||||
foAbs # absolute path, eg: /pathto/bar/foo.nim
|
foAbs # absolute path, e.g.: /pathto/bar/foo.nim
|
||||||
foRelProject # relative to project path, eg: ../foo.nim
|
foRelProject # relative to project path, e.g.: ../foo.nim
|
||||||
foMagicSauce # magic sauce, shortest of (foAbs, foRelProject)
|
foMagicSauce # magic sauce, shortest of (foAbs, foRelProject)
|
||||||
foName # lastPathPart, eg: foo.nim
|
foName # lastPathPart, e.g.: foo.nim
|
||||||
foShort # foName without extension, eg: foo
|
foShort # foName without extension, e.g.: foo
|
||||||
foStacktrace # if optExcessiveStackTrace: foAbs else: foName
|
foStacktrace # if optExcessiveStackTrace: foAbs else: foName
|
||||||
|
|
||||||
proc toFilenameOption*(conf: ConfigRef, fileIdx: FileIndex, opt: FilenameOption): string =
|
proc toFilenameOption*(conf: ConfigRef, fileIdx: FileIndex, opt: FilenameOption): string =
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ iterator myParentDirs(p: string): string =
|
||||||
yield current
|
yield current
|
||||||
|
|
||||||
proc getNimbleFile*(conf: ConfigRef; path: string): string =
|
proc getNimbleFile*(conf: ConfigRef; path: string): string =
|
||||||
## returns absolute path to nimble file, eg: /pathto/cligen.nimble
|
## returns absolute path to nimble file, e.g.: /pathto/cligen.nimble
|
||||||
var parents = 0
|
var parents = 0
|
||||||
block packageSearch:
|
block packageSearch:
|
||||||
for d in myParentDirs(path):
|
for d in myParentDirs(path):
|
||||||
|
|
@ -35,7 +35,7 @@ proc getNimbleFile*(conf: ConfigRef; path: string): string =
|
||||||
if parents <= 0: break
|
if parents <= 0: break
|
||||||
|
|
||||||
proc getPackageName*(conf: ConfigRef; path: string): string =
|
proc getPackageName*(conf: ConfigRef; path: string): string =
|
||||||
## returns nimble package name, eg: `cligen`
|
## returns nimble package name, e.g.: `cligen`
|
||||||
let path = getNimbleFile(conf, path)
|
let path = getNimbleFile(conf, path)
|
||||||
result = path.splitFile.name
|
result = path.splitFile.name
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1226,7 +1226,7 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
|
||||||
infixArgument(g, n, 1)
|
infixArgument(g, n, 1)
|
||||||
put(g, tkSpaces, Space)
|
put(g, tkSpaces, Space)
|
||||||
gsub(g, n, 0) # binary operator
|
gsub(g, n, 0) # binary operator
|
||||||
# eg: `n1 == n2` decompses as following sum:
|
# e.g.: `n1 == n2` decompses as following sum:
|
||||||
if n.len == 3 and not fits(g, oldLineLen + lsub(g, n[1]) + lsub(g, n[2]) + lsub(g, n[0]) + len(" ")):
|
if n.len == 3 and not fits(g, oldLineLen + lsub(g, n[1]) + lsub(g, n[2]) + lsub(g, n[0]) + len(" ")):
|
||||||
optNL(g, g.indent + longIndentWid)
|
optNL(g, g.indent + longIndentWid)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -326,7 +326,7 @@ proc getMsgDiagnostic(c: PContext, flags: TExprFlags, n, f: PNode): string =
|
||||||
var typeHint = ""
|
var typeHint = ""
|
||||||
if sym == nil:
|
if sym == nil:
|
||||||
# Perhaps we're in a `compiles(foo.bar)` expression, or
|
# Perhaps we're in a `compiles(foo.bar)` expression, or
|
||||||
# in a concept, eg:
|
# in a concept, e.g.:
|
||||||
# ExplainedConcept {.explain.} = concept x
|
# ExplainedConcept {.explain.} = concept x
|
||||||
# x.foo is int
|
# x.foo is int
|
||||||
# We could use: `(c.config $ n[1].info)` to get more context.
|
# We could use: `(c.config $ n[1].info)` to get more context.
|
||||||
|
|
|
||||||
|
|
@ -432,7 +432,7 @@ proc isOpImpl(c: PContext, n: PNode, flags: TExprFlags): PNode =
|
||||||
m.diagnostics = @[]
|
m.diagnostics = @[]
|
||||||
m.diagnosticsEnabled = true
|
m.diagnosticsEnabled = true
|
||||||
res = typeRel(m, t2, t1) >= isSubtype # isNone
|
res = typeRel(m, t2, t1) >= isSubtype # isNone
|
||||||
# `res = sameType(t1, t2)` would be wrong, eg for `int is (int|float)`
|
# `res = sameType(t1, t2)` would be wrong, e.g. for `int is (int|float)`
|
||||||
|
|
||||||
result = newIntNode(nkIntLit, ord(res))
|
result = newIntNode(nkIntLit, ord(res))
|
||||||
result.typ = n.typ
|
result.typ = n.typ
|
||||||
|
|
|
||||||
|
|
@ -435,7 +435,7 @@ proc semLowerLetVarCustomPragma(c: PContext, a: PNode, n: PNode): PNode =
|
||||||
var b = a[0]
|
var b = a[0]
|
||||||
if b.kind == nkPragmaExpr:
|
if b.kind == nkPragmaExpr:
|
||||||
if b[1].len != 1:
|
if b[1].len != 1:
|
||||||
# we could in future support pragmas w args eg: `var foo {.bar:"goo".} = expr`
|
# we could in future support pragmas w args e.g.: `var foo {.bar:"goo".} = expr`
|
||||||
return nil
|
return nil
|
||||||
let nodePragma = b[1][0]
|
let nodePragma = b[1][0]
|
||||||
# see: `singlePragma`
|
# see: `singlePragma`
|
||||||
|
|
|
||||||
|
|
@ -1555,7 +1555,7 @@ proc typeRel(c: var TCandidate, f, aOrig: PType,
|
||||||
for i in 1..<f.len:
|
for i in 1..<f.len:
|
||||||
let x = PType(idTableGet(c.bindings, genericBody[i-1]))
|
let x = PType(idTableGet(c.bindings, genericBody[i-1]))
|
||||||
if x == nil:
|
if x == nil:
|
||||||
discard "maybe fine (for eg. a==tyNil)"
|
discard "maybe fine (for e.g. a==tyNil)"
|
||||||
elif x.kind in {tyGenericInvocation, tyGenericParam}:
|
elif x.kind in {tyGenericInvocation, tyGenericParam}:
|
||||||
internalError(c.c.graph.config, "wrong instantiated type!")
|
internalError(c.c.graph.config, "wrong instantiated type!")
|
||||||
else:
|
else:
|
||||||
|
|
@ -2489,7 +2489,7 @@ proc matchesAux(c: PContext, n, nOrig: PNode, m: var TCandidate, marker: var Int
|
||||||
container = nil
|
container = nil
|
||||||
else:
|
else:
|
||||||
# we end up here if the argument can be converted into the varargs
|
# we end up here if the argument can be converted into the varargs
|
||||||
# formal (eg. seq[T] -> varargs[T]) but we have already instantiated
|
# formal (e.g. seq[T] -> varargs[T]) but we have already instantiated
|
||||||
# a container
|
# a container
|
||||||
#assert arg.kind == nkHiddenStdConv # for 'nim check'
|
#assert arg.kind == nkHiddenStdConv # for 'nim check'
|
||||||
# this assertion can be off
|
# this assertion can be off
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ proc dataPointer*[T](a: T): pointer =
|
||||||
## same as C++ `data` that works with std::string, std::vector etc.
|
## same as C++ `data` that works with std::string, std::vector etc.
|
||||||
## Note: safe to use when a.len == 0 but whether the result is nil or not
|
## Note: safe to use when a.len == 0 but whether the result is nil or not
|
||||||
## is implementation defined for performance reasons.
|
## is implementation defined for performance reasons.
|
||||||
# this could be improved with ocmpiler support to avoid the `if`, eg in C++
|
# this could be improved with ocmpiler support to avoid the `if`, e.g. in C++
|
||||||
# `&a[0]` is well defined even if a.size() == 0
|
# `&a[0]` is well defined even if a.size() == 0
|
||||||
when T is string | seq:
|
when T is string | seq:
|
||||||
if a.len == 0: nil else: cast[pointer](a[0].unsafeAddr)
|
if a.len == 0: nil else: cast[pointer](a[0].unsafeAddr)
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ type
|
||||||
preferTypeName,
|
preferTypeName,
|
||||||
preferResolved, # fully resolved symbols
|
preferResolved, # fully resolved symbols
|
||||||
preferMixed,
|
preferMixed,
|
||||||
# most useful, shows: symbol + resolved symbols if it differs, eg:
|
# most useful, shows: symbol + resolved symbols if it differs, e.g.:
|
||||||
# tuple[a: MyInt{int}, b: float]
|
# tuple[a: MyInt{int}, b: float]
|
||||||
|
|
||||||
proc typeToString*(typ: PType; prefer: TPreferedDesc = preferName): string
|
proc typeToString*(typ: PType; prefer: TPreferedDesc = preferName): string
|
||||||
|
|
|
||||||
|
|
@ -765,7 +765,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
||||||
if regs[rb].node.kind == nkRefTy:
|
if regs[rb].node.kind == nkRefTy:
|
||||||
regs[ra].node = regs[rb].node[0]
|
regs[ra].node = regs[rb].node[0]
|
||||||
elif not maybeHandlePtr(regs[rb].node, regs[ra], false):
|
elif not maybeHandlePtr(regs[rb].node, regs[ra], false):
|
||||||
## eg: typ.kind = tyObject
|
## e.g.: typ.kind = tyObject
|
||||||
ensureKind(rkNode)
|
ensureKind(rkNode)
|
||||||
regs[ra].node = regs[rb].node
|
regs[ra].node = regs[rb].node
|
||||||
else:
|
else:
|
||||||
|
|
@ -996,7 +996,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
||||||
if nb.kind != nc.kind: discard
|
if nb.kind != nc.kind: discard
|
||||||
elif (nb == nc) or (nb.kind == nkNilLit): ret = true # intentional
|
elif (nb == nc) or (nb.kind == nkNilLit): ret = true # intentional
|
||||||
elif sameConstant(nb, nc): ret = true
|
elif sameConstant(nb, nc): ret = true
|
||||||
# this also takes care of procvar's, represented as nkTupleConstr, eg (nil, nil)
|
# this also takes care of procvar's, represented as nkTupleConstr, e.g. (nil, nil)
|
||||||
elif nb.kind == nkIntLit and nc.kind == nkIntLit and nb.intVal == nc.intVal: # TODO: nkPtrLit
|
elif nb.kind == nkIntLit and nc.kind == nkIntLit and nb.intVal == nc.intVal: # TODO: nkPtrLit
|
||||||
let tb = nb.getTyp
|
let tb = nb.getTyp
|
||||||
let tc = nc.getTyp
|
let tc = nc.getTyp
|
||||||
|
|
|
||||||
8
koch.nim
8
koch.nim
|
|
@ -63,7 +63,7 @@ Possible Commands:
|
||||||
distrohelper [bindir] helper for distro packagers
|
distrohelper [bindir] helper for distro packagers
|
||||||
tools builds Nim related tools
|
tools builds Nim related tools
|
||||||
toolsNoExternal builds Nim related tools (except external tools,
|
toolsNoExternal builds Nim related tools (except external tools,
|
||||||
ie. nimble)
|
e.g. nimble)
|
||||||
doesn't require network connectivity
|
doesn't require network connectivity
|
||||||
nimble builds the Nimble tool
|
nimble builds the Nimble tool
|
||||||
fusion clone fusion into the working tree
|
fusion clone fusion into the working tree
|
||||||
|
|
@ -76,14 +76,14 @@ Boot options:
|
||||||
for bootstrapping
|
for bootstrapping
|
||||||
|
|
||||||
Commands for core developers:
|
Commands for core developers:
|
||||||
runCI runs continuous integration (CI), eg from travis
|
runCI runs continuous integration (CI), e.g. from travis
|
||||||
docs [options] generates the full documentation
|
docs [options] generates the full documentation
|
||||||
csource -d:danger builds the C sources for installation
|
csource -d:danger builds the C sources for installation
|
||||||
pdf builds the PDF documentation
|
pdf builds the PDF documentation
|
||||||
zip builds the installation zip package
|
zip builds the installation zip package
|
||||||
xz builds the installation tar.xz package
|
xz builds the installation tar.xz package
|
||||||
testinstall test tar.xz package; Unix only!
|
testinstall test tar.xz package; Unix only!
|
||||||
installdeps [options] installs external dependency (eg tinyc) to dist/
|
installdeps [options] installs external dependency (e.g. tinyc) to dist/
|
||||||
tests [options] run the testsuite (run a subset of tests by
|
tests [options] run the testsuite (run a subset of tests by
|
||||||
specifying a category, e.g. `tests cat async`)
|
specifying a category, e.g. `tests cat async`)
|
||||||
temp options creates a temporary compiler for testing
|
temp options creates a temporary compiler for testing
|
||||||
|
|
@ -93,7 +93,7 @@ Web options:
|
||||||
build the official docs, use UA-48159761-1
|
build the official docs, use UA-48159761-1
|
||||||
"""
|
"""
|
||||||
|
|
||||||
let kochExe* = when isMainModule: os.getAppFilename() # always correct when koch is main program, even if `koch` exe renamed eg: `nim c -o:koch_debug koch.nim`
|
let kochExe* = when isMainModule: os.getAppFilename() # always correct when koch is main program, even if `koch` exe renamed e.g.: `nim c -o:koch_debug koch.nim`
|
||||||
else: getAppDir() / "koch".exe # works for winrelease
|
else: getAppDir() / "koch".exe # works for winrelease
|
||||||
|
|
||||||
proc kochExec*(cmd: string) =
|
proc kochExec*(cmd: string) =
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ proc `==`*(a, b: NimSym): bool {.magic: "EqNimrodNode", noSideEffect, deprecated
|
||||||
|
|
||||||
proc sameType*(a, b: NimNode): bool {.magic: "SameNodeType", noSideEffect.} =
|
proc sameType*(a, b: NimNode): bool {.magic: "SameNodeType", noSideEffect.} =
|
||||||
## Compares two Nim nodes' types. Return true if the types are the same,
|
## Compares two Nim nodes' types. Return true if the types are the same,
|
||||||
## eg. true when comparing alias with original type.
|
## e.g. true when comparing alias with original type.
|
||||||
discard
|
discard
|
||||||
|
|
||||||
proc len*(n: NimNode): int {.magic: "NLen", noSideEffect.}
|
proc len*(n: NimNode): int {.magic: "NLen", noSideEffect.}
|
||||||
|
|
@ -280,7 +280,7 @@ else: # bootstrapping substitute
|
||||||
when (NimMajor, NimMinor, NimPatch) >= (1, 3, 5) or defined(nimSymImplTransform):
|
when (NimMajor, NimMinor, NimPatch) >= (1, 3, 5) or defined(nimSymImplTransform):
|
||||||
proc getImplTransformed*(symbol: NimNode): NimNode {.magic: "GetImplTransf", noSideEffect.}
|
proc getImplTransformed*(symbol: NimNode): NimNode {.magic: "GetImplTransf", noSideEffect.}
|
||||||
## For a typed proc returns the AST after transformation pass; this is useful
|
## For a typed proc returns the AST after transformation pass; this is useful
|
||||||
## for debugging how the compiler transforms code (eg: `defer`, `for`) but
|
## for debugging how the compiler transforms code (e.g.: `defer`, `for`) but
|
||||||
## note that code transformations are implementation dependent and subject to change.
|
## note that code transformations are implementation dependent and subject to change.
|
||||||
## See an example in `tests/macros/tmacros_various.nim`.
|
## See an example in `tests/macros/tmacros_various.nim`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1049,7 +1049,7 @@ since((1, 3)):
|
||||||
export isInitialized
|
export isInitialized
|
||||||
|
|
||||||
proc isLeapDay*(dt: DateTime): bool {.since: (1, 1).} =
|
proc isLeapDay*(dt: DateTime): bool {.since: (1, 1).} =
|
||||||
## returns whether `t` is a leap day, ie, Feb 29 in a leap year. This matters
|
## Returns whether `t` is a leap day, i.e. Feb 29 in a leap year. This matters
|
||||||
## as it affects time offset calculations.
|
## as it affects time offset calculations.
|
||||||
runnableExamples:
|
runnableExamples:
|
||||||
let dt = initDateTime(29, mFeb, 2020, 00, 00, 00, utc())
|
let dt = initDateTime(29, mFeb, 2020, 00, 00, 00, utc())
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import std/[json,strutils,tables,sets,strtabs,options]
|
||||||
|
|
||||||
#[
|
#[
|
||||||
Future directions:
|
Future directions:
|
||||||
add a way to customize serialization, for eg:
|
add a way to customize serialization, for e.g.:
|
||||||
* field renaming
|
* field renaming
|
||||||
* allow serializing `enum` and `char` as `string` instead of `int`
|
* allow serializing `enum` and `char` as `string` instead of `int`
|
||||||
(enum is more compact/efficient, and robust to enum renamings, but string
|
(enum is more compact/efficient, and robust to enum renamings, but string
|
||||||
|
|
|
||||||
|
|
@ -485,7 +485,7 @@ proc negInt64(a: int64): int64 {.compilerproc.} =
|
||||||
result = a*(-1)
|
result = a*(-1)
|
||||||
|
|
||||||
proc nimFloatToString(a: float): cstring {.compilerproc.} =
|
proc nimFloatToString(a: float): cstring {.compilerproc.} =
|
||||||
## ensures the result doesn't print like an integer, ie return 2.0, not 2
|
## ensures the result doesn't print like an integer, i.e. return 2.0, not 2
|
||||||
asm """
|
asm """
|
||||||
function nimOnlyDigitsOrMinus(n) {
|
function nimOnlyDigitsOrMinus(n) {
|
||||||
return n.toString().match(/^-?\d+$/);
|
return n.toString().match(/^-?\d+$/);
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ when defined(nimHasInvariant):
|
||||||
proc nimParseBiggestFloat(s: string, number: var BiggestFloat,
|
proc nimParseBiggestFloat(s: string, number: var BiggestFloat,
|
||||||
start = 0): int {.compilerproc.} =
|
start = 0): int {.compilerproc.} =
|
||||||
# This routine attempt to parse float that can parsed quickly.
|
# This routine attempt to parse float that can parsed quickly.
|
||||||
# ie whose integer part can fit inside a 53bits integer.
|
# i.e. whose integer part can fit inside a 53bits integer.
|
||||||
# their real exponent must also be <= 22. If the float doesn't follow
|
# their real exponent must also be <= 22. If the float doesn't follow
|
||||||
# these restrictions, transform the float into this form:
|
# these restrictions, transform the float into this form:
|
||||||
# INTEGER * 10 ^ exponent and leave the work to standard `strtod()`.
|
# INTEGER * 10 ^ exponent and leave the work to standard `strtod()`.
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ proc isValid*[T](x: T): bool = x.len > 0
|
||||||
|
|
||||||
when true:
|
when true:
|
||||||
# these cases appear redundant but they're actually (almost) all different at
|
# these cases appear redundant but they're actually (almost) all different at
|
||||||
# AST level and needed to ensure docgen keeps working, eg because of issues
|
# AST level and needed to ensure docgen keeps working, e.g. because of issues
|
||||||
# like D20200526T163511
|
# like D20200526T163511
|
||||||
type
|
type
|
||||||
Foo* = enum
|
Foo* = enum
|
||||||
|
|
|
||||||
|
|
@ -413,7 +413,7 @@ proc testStdlib(r: var TResults, pattern, options: string, cat: Category) =
|
||||||
proc isValid(file: string): bool =
|
proc isValid(file: string): bool =
|
||||||
for dir in parentDirs(file, inclusive = false):
|
for dir in parentDirs(file, inclusive = false):
|
||||||
if dir.lastPathPart in ["includes", "nimcache"]:
|
if dir.lastPathPart in ["includes", "nimcache"]:
|
||||||
# eg: lib/pure/includes/osenv.nim gives: Error: This is an include file for os.nim!
|
# e.g.: lib/pure/includes/osenv.nim gives: Error: This is an include file for os.nim!
|
||||||
return false
|
return false
|
||||||
let name = extractFilename(file)
|
let name = extractFilename(file)
|
||||||
if name.splitFile.ext != ".nim": return false
|
if name.splitFile.ext != ".nim": return false
|
||||||
|
|
@ -433,7 +433,7 @@ proc testStdlib(r: var TResults, pattern, options: string, cat: Category) =
|
||||||
#[
|
#[
|
||||||
todo:
|
todo:
|
||||||
this logic is fragile:
|
this logic is fragile:
|
||||||
false positives (if appears in a comment), or false negatives, eg
|
false positives (if appears in a comment), or false negatives, e.g.
|
||||||
`when defined(osx) and isMainModule`.
|
`when defined(osx) and isMainModule`.
|
||||||
Instead of fixing this, see https://github.com/nim-lang/Nim/issues/10045
|
Instead of fixing this, see https://github.com/nim-lang/Nim/issues/10045
|
||||||
for a much better way.
|
for a much better way.
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
switch("path", "$lib/../testament/lib")
|
switch("path", "$lib/../testament/lib")
|
||||||
# so we can `import stdtest/foo` inside tests
|
# so we can `import stdtest/foo` inside tests
|
||||||
# Using $lib/../ instead of $nim/ so you can use a different nim to run tests
|
# Using $lib/../ instead of $nim/ so you can use a different nim to run tests
|
||||||
# during local testing, eg nim --lib:lib.
|
# during local testing, e.g. nim --lib:lib.
|
||||||
|
|
||||||
## prevent common user config settings to interfere with testament expectations
|
## prevent common user config settings to interfere with testament expectations
|
||||||
## Indifidual tests can override this if needed to test for these options.
|
## Indifidual tests can override this if needed to test for these options.
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ proc path*(req: Request): string =
|
||||||
return u.path
|
return u.path
|
||||||
|
|
||||||
proc reqMethod*(req: Request): HttpMethod =
|
proc reqMethod*(req: Request): HttpMethod =
|
||||||
## Request method, eg. HttpGet, HttpPost
|
## Request method, e.g. HttpGet, HttpPost
|
||||||
when useHttpBeast:
|
when useHttpBeast:
|
||||||
req.req.httpMethod.get()
|
req.req.httpMethod.get()
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ type
|
||||||
vert_y_period*: cuint
|
vert_y_period*: cuint
|
||||||
vert_u_period*: cuint
|
vert_u_period*: cuint
|
||||||
vert_v_period*: cuint
|
vert_v_period*: cuint
|
||||||
component_order*: array[0..31, char] # eg. UYVY
|
component_order*: array[0..31, char] # e.g. UYVY
|
||||||
scanline_order*: cint # XvTopToBottom, XvBottomToTop
|
scanline_order*: cint # XvTopToBottom, XvBottomToTop
|
||||||
|
|
||||||
PXvImage* = ptr TXvImage
|
PXvImage* = ptr TXvImage
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ mmain.html
|
||||||
doAssert exitCode == 0, output
|
doAssert exitCode == 0, output
|
||||||
block:
|
block:
|
||||||
let (output, exitCode) = runCmd(file, "-d:checkAbi -d:caseBad")
|
let (output, exitCode) = runCmd(file, "-d:checkAbi -d:caseBad")
|
||||||
# on platforms that support _StaticAssert natively, errors will show full context, eg:
|
# on platforms that support _StaticAssert natively, errors will show full context, e.g.:
|
||||||
# error: static_assert failed due to requirement 'sizeof(unsigned char) == 8'
|
# error: static_assert failed due to requirement 'sizeof(unsigned char) == 8'
|
||||||
# "backend & Nim disagree on size for: BadImportcType{int64} [declared in mabi_check.nim(1, 6)]"
|
# "backend & Nim disagree on size for: BadImportcType{int64} [declared in mabi_check.nim(1, 6)]"
|
||||||
check2 "sizeof(unsigned char) == 8"
|
check2 "sizeof(unsigned char) == 8"
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ template fn() =
|
||||||
"""[1.1,"fo",120,[10,11],[true,false],[{"mode":"modeCaseSensitive","table":{"y":"Y","z":"Z"}},{"mode":"modeCaseSensitive","table":{}}],[0,3],-4,{"foo":0.5,"bar":{"a1":"abc"},"bar2":null}]"""
|
"""[1.1,"fo",120,[10,11],[true,false],[{"mode":"modeCaseSensitive","table":{"y":"Y","z":"Z"}},{"mode":"modeCaseSensitive","table":{}}],[0,3],-4,{"foo":0.5,"bar":{"a1":"abc"},"bar2":null}]"""
|
||||||
|
|
||||||
block:
|
block:
|
||||||
# edge case when user defined `==` doesn't handle `nil` well, eg:
|
# edge case when user defined `==` doesn't handle `nil` well, e.g.:
|
||||||
# https://github.com/nim-lang/nimble/blob/63695f490728e3935692c29f3d71944d83bb1e83/src/nimblepkg/version.nim#L105
|
# https://github.com/nim-lang/nimble/blob/63695f490728e3935692c29f3d71944d83bb1e83/src/nimblepkg/version.nim#L105
|
||||||
testRoundtrip(@[Foo(id: 10), nil]): """[{"id":10},null]"""
|
testRoundtrip(@[Foo(id: 10), nil]): """[{"id":10},null]"""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ triggers:
|
||||||
proc main()=
|
proc main()=
|
||||||
let num = 3
|
let num = 3
|
||||||
# if you reduce this, make sure to remove files that shouldn't be generated,
|
# if you reduce this, make sure to remove files that shouldn't be generated,
|
||||||
# or better, do the cleanup logic here eg: `rm .builds/openbsd_*`
|
# or better, do the cleanup logic here e.g.: `rm .builds/openbsd_*`
|
||||||
for i in 0..<num:
|
for i in 0..<num:
|
||||||
let file = fmt".builds/openbsd_{i}.yml"
|
let file = fmt".builds/openbsd_{i}.yml"
|
||||||
let code = genCIopenbsd(i, num)
|
let code = genCIopenbsd(i, num)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue