From 51076a0be6900602e5fc092e52021370937a85f7 Mon Sep 17 00:00:00 2001 From: Charlie Barto Date: Mon, 3 Feb 2014 23:54:01 -0500 Subject: [PATCH 1/2] added good error for stuff like string[int] or int[int] --- compiler/semtypes.nim | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 408b1b62e0..a434effed2 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -885,6 +885,11 @@ proc semGeneric(c: PContext, n: PNode, s: PSym, prev: PType): PType = for i in countup(1, sonsLen(n)-1): var elem = semGenericParamInInvokation(c, n.sons[i]) addToResult(elem) + elif s.typ.kind != tyGenericBody: + #we likely got code of the form TypeA[TypeB] where TypeA is + #not generic. + localError(n.info, errNoGenericParamsAllowedForX, s.name.s) + return newOrPrevType(tyError, prev, c) else: internalAssert s.typ.kind == tyGenericBody From 7cfec910576c3a9f3401aae99f9209716d02f689 Mon Sep 17 00:00:00 2001 From: Charlie Barto Date: Tue, 4 Feb 2014 00:07:17 -0500 Subject: [PATCH 2/2] deleted assert that would never fire because it turned into an error message --- compiler/semtypes.nim | 1 - 1 file changed, 1 deletion(-) diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index a434effed2..789ff55f09 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -891,7 +891,6 @@ proc semGeneric(c: PContext, n: PNode, s: PSym, prev: PType): PType = localError(n.info, errNoGenericParamsAllowedForX, s.name.s) return newOrPrevType(tyError, prev, c) else: - internalAssert s.typ.kind == tyGenericBody var m = newCandidate(c, s, n) matches(c, n, copyTree(n), m)