[prev in list] [next in list] [prev in thread] [next in thread] 

List:       e-lang
Subject:    [e-lang] Bug: Syntax error in deSrcKit generated code
From:       kpreid () attglobal ! net (Kevin Reid)
Date:       2003-11-14 21:58:40
[Download RAW message or body]

? def surgeon := <elib:serial.makeSurgeon>.withSrcKit(null)
# value: <surgeon>

? def foo__uriGetter {
> to get(s) :any {
> def distinct {
> to __optUncall() :any { [foo__uriGetter, "get", [s]] }
> }
> }
> }
# value: <foo__uriGetter>

? surgeon.addExit(foo__uriGetter, "foo__uriGetter")
? surgeon.serialize([<foo:bar>, <foo:bar>])
# syntax error: 
#   [<foo: def t_0 := "bar">, <foo: t_0>]
#                   ^
#
#   <import:org.erights.e.elang.syntax.PrettyFeeder>.pretty("[<foo: def t_0 := \
\"bar\">, <foo: t_0>]") #   \
<import:org.erights.e.elang.syntax.PrettyFeeder>.pretty("[<foo: def t_0 := \"bar\">, \
<foo: t_0>]") #   *** @ \
<jar:file:/Stuff/e/e.jar!/org/erights/e/elib/serial/deSrcKit.emaker#:span::37:47::37:52>
 #   <deSrcBuilder>.buildRoot("[<foo: def t_0 := \"bar\">, <foo: t_0>]")
#   <deSrcBuilder>.buildRoot("[<foo: def t_0 := \"bar\">, <foo: t_0>]")
#   *** @ <jar:file:/Stuff/e/e.jar!/org/erights/e/elib/serial/deASTKit.emaker#:span::212:16::212:24>
 #   <deASTKit>.recognize(term`call(import("__makeList"),           "run"...         \
"get",                 [ibid(4)])])`, <deSrcBuilder>) #   \
<deASTKit>.recognize(term`call(import("__makeList"),           "run"...         \
"get",                 [ibid(4)])])`, <deSrcBuilder>) #   \
<deASTKit>.recognize(term`call(import("__makeList"),           "run"...         \
"get",                 [ibid(4)])])`, <deSrcBuilder>) #   *** @ \
<jar:file:/Stuff/e/e.jar!/org/erights/e/elib/serial/makeSurgeon.emaker#:span::152:42::152:50>
 #   <surgeon>.serialize([<distinct>, <distinct>])
#   <surgeon>.serialize([<distinct>, <distinct>])
#   *** @ <-.e#:span::10:8::10:16>
#   e`surgeon.serialize(__makeLi...foo__uriGetter.get("bar")))`.eval(<an OuterScope>)
#   *** @ <jar:file:/Stuff/e/e.jar!/org/erights/e/elang/cmd/cmdMakerMaker.emaker#:span::75:25::75:28>




Fix for deSrcKit.buildCall, copying the code for 'res' earlier in that
method:



--- ../src-original/esrc/org/erights/e/elib/serial/deSrcKit.emaker      Sun Aug 31 \
                01:27:19 2003
+++ ./esrc/org/erights/e/elib/serial/deSrcKit.emaker    Fri Nov 14 15:56:09 2003
@@ -83,7 +83,11 @@
 
                         `<$protocol:$body>`
                     }
-                    match [`@{protocol}__uriGetter`, `get`, [arg0]] {
+                    match [`@{protocol}__uriGetter`, `get`, [var arg0]] {
+                        if (arg0 =~ `def t_@_`) {
+                            # the result would otherwise misparse.
+                            arg0 := `($arg0)`
+                        }
                         `<$protocol: $arg0>`
                     }
                     match [`__makeList`, `run`, _] {



-- 
Kevin Reid
_______________________________________________
e-lang mailing list
e-lang@mail.eros-os.org
http://www.eros-os.org/mailman/listinfo/e-lang


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic