shithub: mc

Download patch

ref: 13a8561e53b259ab1bd6592df857b7a59b7a2a2b
parent: 5729c9940095be2916feb43b478559082744ba5c
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Sep 5 18:37:58 EDT 2017

Fix traits on named types.

	Erm.

--- a/parse/infer.c
+++ b/parse/infer.c
@@ -921,6 +921,7 @@
 traitsfor(Type *base, Bitset *dst)
 {
 	Traitmap *tm;
+	Bitset *bs;
 	Type *ty;
 	size_t i;
 
@@ -930,7 +931,12 @@
 		while (1) {
 			if (ty->type == Tyvar)
 				break;
-			bsunion(dst, tm->traits);
+			if (ty->type == Tyname && ty->ngparam == 0)
+				bs = htget(tm->name, ty->name);
+			else
+				bs = tm->traits;
+			if (bs)
+				bsunion(dst, bs);
 			for (i = 0; i < tm->nfilter; i++) {
 				if (tymatchrank(tm->filter[i], ty) >= 0)
 					bsput(dst, tm->filtertr[i]->uid);