# HG changeset patch # User Michael Pavone # Date 1405355431 25200 # Node ID 98147071baf6dadaa99ed7c73df7b8eb86400352 # Parent 9d93e65a34be26e3188f72d287991440997f5ad0 Add support for llMessage definitions in buildMethodTables diff -r 9d93e65a34be -r 98147071baf6 modules/ast.tp --- a/modules/ast.tp Mon Jul 14 09:29:49 2014 -0700 +++ b/modules/ast.tp Mon Jul 14 09:30:31 2014 -0700 @@ -125,6 +125,9 @@ tocall <- _tocall args <- _args hasReceiver? <- _receiver? + llMessage? <- { + (tocall nodeType) = _symbol && (tocall name) = "llMessage:withVars:andCode" + } stringIndent <- :indent { argparts <- [] if: (tocall nodeType) = _symbol { diff -r 9d93e65a34be -r 98147071baf6 modules/symbols.tp --- a/modules/symbols.tp Mon Jul 14 09:29:49 2014 -0700 +++ b/modules/symbols.tp Mon Jul 14 09:30:31 2014 -0700 @@ -53,11 +53,17 @@ buildMethodTable <- :tree { _object <- ast obj _assignment <- ast assignment + _call <- ast call + tree fold: table with: :acc el { if: (el nodeType) = _object { (el messages) fold: acc with: :acc msg { if: (msg nodeType) = _assignment { acc defineMethod: ((msg to) name) + } else: { + if: (msg nodeType) = _call && (msg llMessage?) { + acc defineMethod: (((msg args) value) name) + } } acc }