new-style concepts implementation, WIP (#15251)

* fixes #15210 [backport:1.2]

* make tests green
* make ordinal work
* makes Swapable test compile
* make Indexable example work
* concepts: 'self' is now 'Self'
* concepts: make Dictionary example compile
* document the new concept implementation
* concepts: make typeDesc work properly
* concepts: allow documentation comments (d'oh)
This commit is contained in:
Andreas Rumpf 2021-02-24 13:17:33 +01:00 • committed by GitHub
commit 6278b5d89a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 528 additions and 59 deletions

View file

@ -1195,7 +1195,8 @@ proc sameTypeAux(x, y: PType, c: var TSameTypeClosure): bool =
cycleCheck()
result = sameTypeAux(a.lastSon, b.lastSon, c)
of tyNone: result = false
of tyOptDeprecated: doAssert false
of tyConcept:
result = exprStructuralEquivalent(a.n, b.n)
proc sameBackendType*(x, y: PType): bool =
var c = initSameTypeClosure()
@ -1271,6 +1272,7 @@ proc matchType*(a: PType, pattern: openArray[tuple[k:TTypeKind, i:int]],
a = a[i]
result = a.kind == last
include sizealignoffsetimpl
proc computeSize*(conf: ConfigRef; typ: PType): BiggestInt =