mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* alias syntax fixes, improvements and tests
* even better, cannot use alias syntax with generics
* more type tests, improve comment
* fix again
* consistent error message + make t5167_5 work
* more comments, remove {.noalias.}
29 lines
763 B
Nim
29 lines
763 B
Nim
discard """
|
|
cmd: "nim check --hints:off $file"
|
|
"""
|
|
|
|
block: # with params
|
|
type Foo = object
|
|
bar: int
|
|
|
|
var foo = Foo(bar: 10)
|
|
template bar(x: int): int = x + foo.bar
|
|
let a = bar #[tt.Error
|
|
^ invalid type: 'template (x: int): int' for let. Did you mean to call the template with '()'?]#
|
|
bar = 15 #[tt.Error
|
|
^ 'bar' cannot be assigned to]#
|
|
|
|
block: # generic template
|
|
type Foo = object
|
|
bar: int
|
|
|
|
var foo = Foo(bar: 10)
|
|
template bar[T]: T = T(foo.bar)
|
|
let a = bar #[tt.Error
|
|
^ invalid type: 'template (): T' for let. Did you mean to call the template with '()'?; tt.Error
|
|
^ 'bar' has unspecified generic parameters]#
|
|
let b = bar[float]()
|
|
doAssert b == 10.0
|
|
bar = 15 #[tt.Error
|
|
^ 'bar' cannot be assigned to]#
|