diff options
author | metagn <metagngn@gmail.com> | 2023-06-06 07:54:07 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-06 06:54:07 +0200 |
commit | b97d603cd00a210547bda1a2a1c3e09f97fcc49e (patch) | |
tree | 080b4ad7b5826b88a9483c6a0e4d697096f12cc1 /tests/msgs | |
parent | 2ab948ce53e3d9b80bf9b02644c8ec8991f34d0a (diff) | |
download | Nim-b97d603cd00a210547bda1a2a1c3e09f97fcc49e.tar.gz |
some test cleanups & category reorganization (#22010)
* clean up some test categories * mention exact slice issue * magics into system * move trangechecks into overflow * move tmemory to system * try fix CI * try fix CI * final CI fix
Diffstat (limited to 'tests/msgs')
-rw-r--r-- | tests/msgs/mdeprecated3.nim | 10 | ||||
-rw-r--r-- | tests/msgs/mspellsuggest.nim | 7 | ||||
-rw-r--r-- | tests/msgs/mused2a.nim | 23 | ||||
-rw-r--r-- | tests/msgs/mused2b.nim | 3 | ||||
-rw-r--r-- | tests/msgs/mused2c.nim | 1 | ||||
-rw-r--r-- | tests/msgs/mused3.nim | 76 | ||||
-rw-r--r-- | tests/msgs/mused3a.nim | 41 | ||||
-rw-r--r-- | tests/msgs/mused3b.nim | 12 | ||||
-rw-r--r-- | tests/msgs/tdeprecated1.nim | 15 | ||||
-rw-r--r-- | tests/msgs/tdeprecated2.nim | 42 | ||||
-rw-r--r-- | tests/msgs/tdeprecated3.nim | 33 | ||||
-rw-r--r-- | tests/msgs/tdeprecatedequalhook.nim | 11 | ||||
-rw-r--r-- | tests/msgs/texpandmacro.nim | 18 | ||||
-rw-r--r-- | tests/msgs/thints_off.nim | 4 | ||||
-rw-r--r-- | tests/msgs/tspellsuggest.nim | 45 | ||||
-rw-r--r-- | tests/msgs/tspellsuggest2.nim | 45 | ||||
-rw-r--r-- | tests/msgs/tspellsuggest3.nim | 21 | ||||
-rw-r--r-- | tests/msgs/tused2.nim | 46 | ||||
-rw-r--r-- | tests/msgs/twarningaserror.nim | 35 |
19 files changed, 488 insertions, 0 deletions
diff --git a/tests/msgs/mdeprecated3.nim b/tests/msgs/mdeprecated3.nim new file mode 100644 index 000000000..0a9c6e37d --- /dev/null +++ b/tests/msgs/mdeprecated3.nim @@ -0,0 +1,10 @@ +type + Ty* {.deprecated.} = uint32 + Ty1* {.deprecated: "hello".} = uint32 + +var aVar* {.deprecated.}: char + +proc aProc*() {.deprecated.} = discard +proc aProc1*() {.deprecated: "hello".} = discard + +{.deprecated: "goodbye".} diff --git a/tests/msgs/mspellsuggest.nim b/tests/msgs/mspellsuggest.nim new file mode 100644 index 000000000..ad449554f --- /dev/null +++ b/tests/msgs/mspellsuggest.nim @@ -0,0 +1,7 @@ +proc fooBar4*(a: int) = discard +var fooBar9* = 0 + +var fooCar* = 0 +type FooBar* = int +type FooCar* = int +type GooBa* = int diff --git a/tests/msgs/mused2a.nim b/tests/msgs/mused2a.nim new file mode 100644 index 000000000..d9b2bb9bf --- /dev/null +++ b/tests/msgs/mused2a.nim @@ -0,0 +1,23 @@ +import std/strutils + +from std/os import fileExists + +import std/typetraits as typetraits2 +from std/setutils import complement + + + + + +proc fn1() = discard +proc fn2*() = discard + + +let fn4 = 0 +let fn5* = 0 + + +const fn7 = 0 +const fn8* = 0 + +type T1 = object diff --git a/tests/msgs/mused2b.nim b/tests/msgs/mused2b.nim new file mode 100644 index 000000000..39c92b964 --- /dev/null +++ b/tests/msgs/mused2b.nim @@ -0,0 +1,3 @@ +import mused2c +export mused2c + diff --git a/tests/msgs/mused2c.nim b/tests/msgs/mused2c.nim new file mode 100644 index 000000000..a374e634e --- /dev/null +++ b/tests/msgs/mused2c.nim @@ -0,0 +1 @@ +proc baz*() = discard \ No newline at end of file diff --git a/tests/msgs/mused3.nim b/tests/msgs/mused3.nim new file mode 100644 index 000000000..0beec1d44 --- /dev/null +++ b/tests/msgs/mused3.nim @@ -0,0 +1,76 @@ +#[ +ran from trunner +]# + + + + + + +# line 10 +when defined case1: + from mused3a import nil + from mused3b import nil + mused3a.fn1() + +when defined case2: + from mused3a as m1 import nil + m1.fn1() + +when defined case3: + from mused3a import fn1 + fn1() + +when defined case4: + from mused3a as m1 import fn1 + m1.fn1() + +when defined case5: + import mused3a as m1 + fn1() + +when defined case6: + import mused3a except nonexistent + fn1() + +when defined case7: + import mused3a + mused3a.fn1() + +when defined case8: + # re-export test + import mused3a except nonexistent + gn1() + +when defined case9: + # re-export test + import mused3a + gn1() + +when defined case10: + #[ + edge case which happens a lot in compiler code: + don't report UnusedImport for mused3b here even though it works without `import mused3b`, + because `a.b0.f0` is accessible from both mused3a and mused3b (fields are given implicit access) + ]# + import mused3a + import mused3b + var a: Bar + discard a.b0.f0 + +when false: + when defined case11: + #[ + xxx minor bug: this should give: + Warning: imported and not used: 'm2' [UnusedImport] + but doesn't, because currently implementation in `markOwnerModuleAsUsed` + only looks at `fn1`, not fully qualified call `m1.fn1() + ]# + from mused3a as m1 import nil + from mused3a as m2 import nil + m1.fn1() + +when defined case12: + import mused3a + import mused3a + fn1() diff --git a/tests/msgs/mused3a.nim b/tests/msgs/mused3a.nim new file mode 100644 index 000000000..c33d1ecb3 --- /dev/null +++ b/tests/msgs/mused3a.nim @@ -0,0 +1,41 @@ +when defined case1: + proc fn1*() = discard + +when defined case2: + proc fn1*() = discard + +when defined case3: + proc fn1*() = discard + proc fn2*() = discard + +when defined case4: + proc fn1*() = discard + proc fn2*() = discard + +when defined case5: + proc fn1*() = discard + +when defined case6: + proc fn1*() = discard + +when defined case7: + proc fn1*() = discard + +when defined case8: + import mused3b + export mused3b + +when defined case9: + import mused3b + export mused3b + +when defined case10: + import mused3b + type Bar* = object + b0*: Foo + +when defined case11: + proc fn1*() = discard + +when defined case12: + proc fn1*() = discard diff --git a/tests/msgs/mused3b.nim b/tests/msgs/mused3b.nim new file mode 100644 index 000000000..de288bb08 --- /dev/null +++ b/tests/msgs/mused3b.nim @@ -0,0 +1,12 @@ +when defined case1: + proc gn1*()=discard + +when defined case8: + proc gn1*()=discard + +when defined case9: + proc gn1*()=discard + +when defined case10: + type Foo* = object + f0*: int diff --git a/tests/msgs/tdeprecated1.nim b/tests/msgs/tdeprecated1.nim new file mode 100644 index 000000000..f4e85da0b --- /dev/null +++ b/tests/msgs/tdeprecated1.nim @@ -0,0 +1,15 @@ +let foo* {.deprecated: "abcd".} = 42 +var foo1* {.deprecated: "efgh".} = 42 +foo1 = foo #[tt.Warning +^ efgh; foo1 is deprecated [Deprecated]; tt.Warning + ^ abcd; foo is deprecated [Deprecated]]# + +proc hello[T](a: T) {.deprecated: "Deprecated since v1.2.0, use 'HelloZ'".} = + discard + +hello[int](12) #[tt.Warning +^ Deprecated since v1.2.0, use 'HelloZ'; hello is deprecated [Deprecated]]# + +const foo2* {.deprecated: "abcd".} = 42 +discard foo2 #[tt.Warning + ^ abcd; foo2 is deprecated [Deprecated]]# diff --git a/tests/msgs/tdeprecated2.nim b/tests/msgs/tdeprecated2.nim new file mode 100644 index 000000000..71d20081e --- /dev/null +++ b/tests/msgs/tdeprecated2.nim @@ -0,0 +1,42 @@ +discard """ + nimout: ''' +tdeprecated2.nim(23, 3) Warning: a is deprecated [Deprecated] +tdeprecated2.nim(30, 11) Warning: asdf; enum 'Foo' which contains field 'a' is deprecated [Deprecated] +tdeprecated2.nim(40, 16) Warning: use fooX instead; fooA is deprecated [Deprecated] +end +''' +""" + + + + + + +## line 15 + + + +block: + var + a {.deprecated.}: array[0..11, int] + + a[8] = 1 + +block t10111: + type + Foo {.deprecated: "asdf" .} = enum + a + + var _ = a + + +block: # issue #8063 + type + Foo = enum + fooX + + const fooA {.deprecated: "use fooX instead".} = fooX + let + foo: Foo = fooA + echo foo + static: echo "end" diff --git a/tests/msgs/tdeprecated3.nim b/tests/msgs/tdeprecated3.nim new file mode 100644 index 000000000..0c1b7deff --- /dev/null +++ b/tests/msgs/tdeprecated3.nim @@ -0,0 +1,33 @@ +discard """ + matrix: "--hint:all:off" + nimoutFull: true + nimout: ''' +tdeprecated3.nim(21, 8) Warning: goodbye; mdeprecated3 is deprecated [Deprecated] +tdeprecated3.nim(24, 10) Warning: Ty is deprecated [Deprecated] +tdeprecated3.nim(27, 10) Warning: hello; Ty1 is deprecated [Deprecated] +tdeprecated3.nim(30, 8) Warning: aVar is deprecated [Deprecated] +tdeprecated3.nim(32, 3) Warning: aProc is deprecated [Deprecated] +tdeprecated3.nim(33, 3) Warning: hello; aProc1 is deprecated [Deprecated] +''' +""" + + + + + + + +# line 20 +import mdeprecated3 + +block: + var z: Ty + z = 0 +block: + var z: Ty1 + z = 0 +block: + echo aVar +block: + aProc() + aProc1() diff --git a/tests/msgs/tdeprecatedequalhook.nim b/tests/msgs/tdeprecatedequalhook.nim new file mode 100644 index 000000000..79ee835f8 --- /dev/null +++ b/tests/msgs/tdeprecatedequalhook.nim @@ -0,0 +1,11 @@ +discard """ + errormsg: "Overriding `=` hook is deprecated; Override `=copy` hook instead" + matrix: "--warningAsError[Deprecated]:on" +""" + +type + SharedString = object + data: string + +proc `=`(x: var SharedString, y: SharedString) = + discard \ No newline at end of file diff --git a/tests/msgs/texpandmacro.nim b/tests/msgs/texpandmacro.nim new file mode 100644 index 000000000..fea8b571f --- /dev/null +++ b/tests/msgs/texpandmacro.nim @@ -0,0 +1,18 @@ +discard """ + cmd: "nim c --expandMacro:foo $file" + nimout: '''texpandmacro.nim(17, 1) Hint: expanded macro: +echo ["injected echo"] +var x = 4 [ExpandMacro] +''' + output: '''injected echo''' +""" + +import macros + +macro foo(x: untyped): untyped = + result = quote do: + echo "injected echo" + `x` + +foo: + var x = 4 diff --git a/tests/msgs/thints_off.nim b/tests/msgs/thints_off.nim new file mode 100644 index 000000000..5a4cadad6 --- /dev/null +++ b/tests/msgs/thints_off.nim @@ -0,0 +1,4 @@ +discard """ + matrix: "--hints:off" +""" +doAssert true diff --git a/tests/msgs/tspellsuggest.nim b/tests/msgs/tspellsuggest.nim new file mode 100644 index 000000000..ea0a98cd3 --- /dev/null +++ b/tests/msgs/tspellsuggest.nim @@ -0,0 +1,45 @@ +discard """ + matrix: "--spellsuggest:15 --hints:off" + action: "reject" + nimout: ''' +tspellsuggest.nim(45, 13) Error: undeclared identifier: 'fooBar' +candidates (edit distance, scope distance); see '--spellSuggest': + (1, 0): 'fooBar8' + (1, 1): 'fooBar7' + (1, 3): 'fooBar1' + (1, 3): 'fooBar2' + (1, 3): 'fooBar3' + (1, 3): 'fooBar4' + (1, 3): 'fooBar5' + (1, 3): 'fooBar6' + (1, 5): 'FooBar' + (1, 5): 'fooBar4' + (1, 5): 'fooBar9' + (1, 5): 'fooCar' + (2, 5): 'FooCar' + (2, 5): 'GooBa' + (3, 0): 'fooBarBaz' +''' +""" + +# tests `--spellsuggest:num` + + + + +# line 30 +import ./mspellsuggest + +var fooBar1 = 0 +let fooBar2 = 0 +const fooBar3 = 0 +proc fooBar4() = discard +template fooBar5() = discard +macro fooBar6() = discard + +proc main = + var fooBar7 = 0 + block: + var fooBar8 = 0 + const fooBarBaz = 0 + let x = fooBar diff --git a/tests/msgs/tspellsuggest2.nim b/tests/msgs/tspellsuggest2.nim new file mode 100644 index 000000000..4bf05799e --- /dev/null +++ b/tests/msgs/tspellsuggest2.nim @@ -0,0 +1,45 @@ +discard """ + matrix: "--spellsuggest:12 --hints:off" + action: "reject" + nimout: ''' +tspellsuggest2.nim(45, 13) Error: undeclared identifier: 'fooBar' +candidates (edit distance, scope distance); see '--spellSuggest': + (1, 0): 'fooBar8' + (1, 1): 'fooBar7' + (1, 3): 'fooBar1' + (1, 3): 'fooBar2' + (1, 3): 'fooBar3' + (1, 3): 'fooBar4' + (1, 3): 'fooBar5' + (1, 3): 'fooBar6' + (1, 5): 'FooBar' + (1, 5): 'fooBar4' + (1, 5): 'fooBar9' + (1, 5): 'fooCar' +''' +""" + +# tests `--spellsuggest` + + + + + + + +# line 30 +import ./mspellsuggest + +var fooBar1 = 0 +let fooBar2 = 0 +const fooBar3 = 0 +proc fooBar4() = discard +template fooBar5() = discard +macro fooBar6() = discard + +proc main = + var fooBar7 = 0 + block: + var fooBar8 = 0 + const fooBarBaz = 0 + let x = fooBar diff --git a/tests/msgs/tspellsuggest3.nim b/tests/msgs/tspellsuggest3.nim new file mode 100644 index 000000000..bd4d5256f --- /dev/null +++ b/tests/msgs/tspellsuggest3.nim @@ -0,0 +1,21 @@ +discard """ + matrix: "--spellsuggest:4 --hints:off" + action: "reject" + nimout: ''' +tspellsuggest3.nim(21, 1) Error: undeclared identifier: 'fooBar' +candidates (edit distance, scope distance); see '--spellSuggest': + (1, 2): 'FooBar' + (1, 2): 'fooBar4' + (1, 2): 'fooBar9' + (1, 2): 'fooCar' +''' +""" + + +import ./mspellsuggest +import ./mspellsuggest +import ./mspellsuggest +import ./mspellsuggest + + +fooBar diff --git a/tests/msgs/tused2.nim b/tests/msgs/tused2.nim new file mode 100644 index 000000000..f80c198d8 --- /dev/null +++ b/tests/msgs/tused2.nim @@ -0,0 +1,46 @@ +discard """ + matrix: "--hint:all:off --hint:XDeclaredButNotUsed --path:." + joinable: false + nimoutFull: true + nimout: ''' +mused2a.nim(12, 6) Hint: 'fn1' is declared but not used [XDeclaredButNotUsed] +mused2a.nim(16, 5) Hint: 'fn4' is declared but not used [XDeclaredButNotUsed] +mused2a.nim(20, 7) Hint: 'fn7' is declared but not used [XDeclaredButNotUsed] +mused2a.nim(23, 6) Hint: 'T1' is declared but not used [XDeclaredButNotUsed] +mused2a.nim(1, 11) Warning: imported and not used: 'strutils' [UnusedImport] +mused2a.nim(3, 9) Warning: imported and not used: 'os' [UnusedImport] +mused2a.nim(5, 23) Warning: imported and not used: 'typetraits2' [UnusedImport] +mused2a.nim(6, 9) Warning: imported and not used: 'setutils' [UnusedImport] +tused2.nim(42, 8) Warning: imported and not used: 'mused2a' [UnusedImport] +tused2.nim(45, 11) Warning: imported and not used: 'strutils' [UnusedImport] +''' +""" + + + + + + + + + + + + + + + + + + + + + + +# line 40 + +import mused2a +import mused2b + +import std/strutils +baz() diff --git a/tests/msgs/twarningaserror.nim b/tests/msgs/twarningaserror.nim new file mode 100644 index 000000000..6f7b76095 --- /dev/null +++ b/tests/msgs/twarningaserror.nim @@ -0,0 +1,35 @@ +discard """ + joinable: false +""" + +#[ +tests: hintAsError, warningAsError +]# + +template fn1 = + {.hintAsError[ConvFromXtoItselfNotNeeded]:on.} + proc fn(a: string) = discard a.string + {.hintAsError[ConvFromXtoItselfNotNeeded]:off.} + +template fn2 = + {.hintAsError[ConvFromXtoItselfNotNeeded]:on.} + proc fn(a: string) = discard a + {.hintAsError[ConvFromXtoItselfNotNeeded]:off.} + +template gn1 = + {.warningAsError[ProveInit]:on.} + proc fn(): var int = discard + discard fn() + {.warningAsError[ProveInit]:off.} + +template gn2 = + {.warningAsError[ProveInit]:on.} + proc fn(): int = discard + discard fn() + {.warningAsError[ProveInit]:off.} + +doAssert not compiles(fn1()) +doAssert compiles(fn2()) + +doAssert not compiles(gn1()) +doAssert compiles(gn2()) |