diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-07-27 14:59:28 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-07-28 20:23:24 +0200 |
commit | 471672fecc579b9453d3e756d3fa4f51a8e72b5e (patch) | |
tree | 30ed671929a59a68b65e8066fbc94a65013c1686 | |
parent | f18ff6a033643dc861002b18124feafb52cedfd3 (diff) | |
download | Nim-471672fecc579b9453d3e756d3fa4f51a8e72b5e.tar.gz |
fix: generic tuples instantiations were cached incorrectly
-rw-r--r-- | compiler/types.nim | 2 | ||||
-rw-r--r-- | tests/tuples/twrong_generic_caching.nim | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/compiler/types.nim b/compiler/types.nim index a87f9470f..5fbab85b9 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -803,6 +803,8 @@ proc sameTuple(a, b: PType, c: var TSameTypeClosure): bool = result = x.name.id == y.name.id if not result: break else: internalError(a.n.info, "sameTuple") + elif a.n != b.n and (a.n == nil or b.n == nil) and IgnoreTupleFields notin c.flags: + result = false template ifFastObjectTypeCheckFailed(a, b: PType, body: stmt) {.immediate.} = if tfFromGeneric notin a.flags + b.flags: diff --git a/tests/tuples/twrong_generic_caching.nim b/tests/tuples/twrong_generic_caching.nim new file mode 100644 index 000000000..32ef344d2 --- /dev/null +++ b/tests/tuples/twrong_generic_caching.nim @@ -0,0 +1,4 @@ + +import parsecfg + +import asynchttpserver |