From 24a3196e17dc9792891c284c67d6dbe2171fd2d8 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Sun, 10 Aug 2008 16:45:54 +0000 Subject: Fix AW/422 * interp/i-spec1.boot (upDeclare): Fields are not declarations. * interp/i-map.boot (getUserIdentifiersIn): Ignore field names. * testsuite/interpreter/aw-422.input: New. --- src/interp/i-spec1.boot | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/interp/i-spec1.boot') diff --git a/src/interp/i-spec1.boot b/src/interp/i-spec1.boot index 9ad10e05..b8f6121d 100644 --- a/src/interp/i-spec1.boot +++ b/src/interp/i-spec1.boot @@ -1098,6 +1098,12 @@ upDeclare t == not isLegitimateMode(mode,nil,nil) => throwKeyedMsgSP("S2IE0004",[mode],op) categoryForm?(mode) => throwKeyedMsgSP("S2IE0011",[mode, 'category],op) packageForm?(mode) => throwKeyedMsgSP("S2IE0011",[mode, 'package],op) + getAtree(op,"callingFunction") => + -- This isn't a real declaration, rather a field specification. + not IDENTP lhs => throwKeyedMsg("S2IE0020",nil) + -- ??? When we come to support field spec as type, change this. + putValue(op,objNewWrap([":",lhs,mode],mode)) + putModeSet(op,[mode]) junk := lhs is ["free",["tuple",:vars]] or lhs is ['free,['LISTOF,:vars]] or lhs is ["free",:vars] => -- cgit v1.2.3