diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/compiler.boot | 6 | ||||
-rw-r--r-- | src/interp/i-spec2.boot | 1 | ||||
-rw-r--r-- | src/interp/sys-constants.boot | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index c7a73820..fd4519fc 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -954,7 +954,11 @@ compConstruct(form is ["construct",:l],m,e) == ++ Compile a literal (quoted) symbol. compQuote: (%Form,%Mode,%Env) -> %Maybe %Triple compQuote(expr,m,e) == - expr is ["QUOTE",x] and IDENTP x => convert([expr,$Symbol,e],m) + expr is ["QUOTE",x] and IDENTP x => + -- Ideally, Identifier should be the default type. However, for + -- historical reasons we cannot afford that luxury yet. + m = $Identifier => [expr,$Identifier,e] + convert([expr,$Symbol,e],m) stackAndThrow('"%1b is not a literal symbol.",[x]) compList: (%Form,%Mode,%Env) -> %Maybe %Triple diff --git a/src/interp/i-spec2.boot b/src/interp/i-spec2.boot index 0f158a2b..7c849c00 100644 --- a/src/interp/i-spec2.boot +++ b/src/interp/i-spec2.boot @@ -810,6 +810,7 @@ upQUOTE t == m:= getBasicMode expr => m IDENTP expr => -- $useSymbolNotVariable => $Symbol + getTarget t = $Identifier => $Identifier ['Variable,expr] $InputForm evalQUOTE(op,[expr],ms) diff --git a/src/interp/sys-constants.boot b/src/interp/sys-constants.boot index 51bdfea0..25382ba9 100644 --- a/src/interp/sys-constants.boot +++ b/src/interp/sys-constants.boot @@ -427,6 +427,9 @@ $String == $Symbol == '(Symbol) +++ The Identifier domain form +$Identifier == + '(Identifier) ++ The 'wildcar' for a type -- "?" in Spad syntax. This stands for ++ an unspecified type. |