diff --git a/js/compiler/compiler.js b/js/compiler/compiler.js index 69bcf56..e9edbb0 100644 --- a/js/compiler/compiler.js +++ b/js/compiler/compiler.js @@ -129,9 +129,11 @@ var modifiedSourceActions = { label + ', ' + JSON.stringify(formals) + ');'; }, - FieldDeclarationStatement: function(_field, memberExpr, _eq, initExpr, sc) { + FieldDeclarationStatement: function(_field, memberExpr, _eq, maybeInitExpr, sc) { return 'Syndicate.Actor.declareField(' + memberExpr.memberObjectExpr.asES5 + ', ' + - memberExpr.memberPropExpr.asES5 + ', ' + initExpr.asES5 + ')' + + memberExpr.memberPropExpr.asES5 + ', ' + + (maybeInitExpr.numChildren === 1 ? maybeInitExpr.asES5 : 'undefined') + + ')' + sc.interval.contents; }, diff --git a/js/compiler/syndicate.ohm b/js/compiler/syndicate.ohm index b91a487..66c5899 100644 --- a/js/compiler/syndicate.ohm +++ b/js/compiler/syndicate.ohm @@ -31,7 +31,7 @@ Syndicate <: ES5 { AssertionTypeDeclarationStatement = (assertion | message) type identifier "(" FormalParameterList ")" ("=" stringLiteral)? #(sc) - FieldDeclarationStatement = field MemberExpression "=" AssignmentExpression #(sc) + FieldDeclarationStatement = field MemberExpression ("=" AssignmentExpression)? #(sc) MemberExpression += field MemberExpression -- fieldRefExp UnaryExpression += delete field MemberExpression -- fieldDelExp