require errormsg to be specified before file.
This commit is contained in:
parent
ca394ebd95
commit
1105d03644
264 changed files with 305 additions and 623 deletions
|
|
@ -1,6 +1,5 @@
|
|||
discard """
|
||||
file: "tconcepts.nim"
|
||||
output: '''
|
||||
output: '''
|
||||
10
|
||||
20
|
||||
int
|
||||
|
|
@ -378,53 +377,53 @@ block tvectorspace:
|
|||
block tstack:
|
||||
template reject(e) =
|
||||
static: assert(not compiles(e))
|
||||
|
||||
|
||||
type
|
||||
ArrayStack = object
|
||||
data: seq[int]
|
||||
|
||||
|
||||
proc push(s: var ArrayStack, item: int) =
|
||||
s.data.add item
|
||||
|
||||
|
||||
proc pop(s: var ArrayStack): int =
|
||||
return s.data.pop()
|
||||
|
||||
|
||||
type
|
||||
Stack[T] = concept var s
|
||||
s.push(T)
|
||||
s.pop() is T
|
||||
|
||||
|
||||
type ValueType = T
|
||||
const ValueTypeName = T.name.toUpperAscii
|
||||
|
||||
|
||||
proc genericAlgorithm[T](s: var Stack[T], y: T) =
|
||||
static:
|
||||
echo "INFERRED ", T.name
|
||||
echo "VALUE TYPE ", s.ValueType.name
|
||||
echo "VALUE TYPE NAME ", s.ValueTypeName
|
||||
|
||||
|
||||
s.push(y)
|
||||
echo s.pop
|
||||
|
||||
|
||||
proc implicitGeneric(s: var Stack): auto =
|
||||
static:
|
||||
echo "IMPLICIT INFERRED ", s.T.name, " ", Stack.T.name
|
||||
echo "IMPLICIT VALUE TYPE ", s.ValueType.name, " ", Stack.ValueType.name
|
||||
echo "IMPLICIT VALUE TYPE NAME ", s.ValueTypeName, " ", Stack.ValueTypeName
|
||||
|
||||
|
||||
return s.pop()
|
||||
|
||||
|
||||
var s = ArrayStack(data: @[])
|
||||
|
||||
|
||||
s.push 10
|
||||
s.genericAlgorithm 20
|
||||
echo s.implicitGeneric
|
||||
|
||||
|
||||
reject s.genericAlgorithm "x"
|
||||
reject s.genericAlgorithm 1.0
|
||||
reject "str".implicitGeneric
|
||||
reject implicitGeneric(10)
|
||||
|
||||
|
||||
|
||||
|
||||
import libs/[trie_database, trie]
|
||||
|
|
|
|||
|
|
@ -63,8 +63,8 @@ texplain.nim(92, 5) NestedConcept: concept predicate failed
|
|||
|
||||
expression: f(y)
|
||||
'''
|
||||
line: 138
|
||||
errormsg: "type mismatch: got <MatchingType>"
|
||||
line: 138
|
||||
"""
|
||||
|
||||
|
||||
|
|
@ -136,4 +136,3 @@ static:
|
|||
# finally, provide multiple nested explanations for failed matching
|
||||
# of regular concepts, even when the explain pragma is not used
|
||||
f(y)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue