Chromium Code Reviews| Index: frog/frogsh |
| =================================================================== |
| --- frog/frogsh (revision 1986) |
| +++ frog/frogsh (working copy) |
| @@ -3909,7 +3909,7 @@ |
| this.beginToken = beginToken; |
| this.endToken = endToken; |
| // Initializers done |
| - FunctionElement.call(this, name); |
| + FunctionElement.call(this, name, const$216/*ElementKind.FUNCTION*/, null); |
| } |
| $inherits(PartialFunctionElement, FunctionElement); |
| PartialFunctionElement.prototype.parseNode = function(canceler, logger) { |
| @@ -6311,6 +6311,9 @@ |
| return ('<<unparse error: ' + this.getObjectDescription() + ': ' + unparser.sb + '>>'); |
| } |
| } |
| +Node.prototype.asIdentifier = function() { |
| + return null; |
| +} |
| Node.prototype.asOperator = function() { |
| return null; |
| } |
| @@ -6521,6 +6524,11 @@ |
| // Initializers done |
| Node.call(this); |
| } |
| +NodeList.empty$ctor = function() { |
| + // Initializers done |
| + NodeList.call(this, null, const$209/*const EmptyLink<Node>()*/); |
| +} |
| +NodeList.empty$ctor.prototype = NodeList.prototype; |
| NodeList.singleton$ctor = function(node) { |
| // Initializers done |
| NodeList.call(this, null, LinkFactory.Link$factory(node)); |
| @@ -6532,6 +6540,9 @@ |
| var $0; |
| return (($0 = this._nodes != null ? this._nodes : const$209/*const EmptyLink<Node>()*/) == null ? null : $0.assert$Link_Node()); |
|
ahe
2011/12/02 11:27:41
Long line ;-)
|
| } |
| +NodeList.prototype.isEmpty = function() { |
| + return this.get$nodes().isEmpty(); |
| +} |
| NodeList.prototype.accept = function(visitor) { |
| return visitor.visitNodeList(this); |
| } |
| @@ -6568,6 +6579,7 @@ |
| }; |
| NodeList.prototype.getBeginToken$0 = NodeList.prototype.getBeginToken; |
| NodeList.prototype.getEndToken$0 = NodeList.prototype.getEndToken; |
| +NodeList.prototype.isEmpty$0 = NodeList.prototype.isEmpty; |
| // ********** Code for Block ************** |
| function Block(statements) { |
| this.statements = statements; |
| @@ -6837,6 +6849,9 @@ |
| var $0; |
| return (($0 = this.token.get$value()) == null ? null : $0.assert$SourceString()); |
| } |
| +Identifier.prototype.asIdentifier = function() { |
| + return this; |
| +} |
| Identifier.prototype.accept = function(visitor) { |
| return visitor.visitIdentifier(this); |
| } |
| @@ -7423,6 +7438,9 @@ |
| Element.prototype.get$name = function() { return this.name; }; |
| Element.prototype.get$kind = function() { return this.kind; }; |
| Element.prototype.get$enclosingElement = function() { return this.enclosingElement; }; |
| +Element.prototype.isClassMember = function() { |
| + return this.enclosingElement != null && $eq(this.enclosingElement.kind, const$214/*ElementKind.CLASS*/); |
| +} |
| Element.prototype.hashCode = function() { |
| return this.name.hashCode(); |
| } |
| @@ -7465,14 +7483,14 @@ |
| return this.computeType(($0 == null ? null : $0.assert$Compiler()), ($1 == null ? null : $1.assert$Types())); |
| }; |
| // ********** Code for FunctionElement ************** |
| -function FunctionElement(name) { |
| +function FunctionElement(name, kind, enclosing) { |
| // Initializers done |
| - Element.call(this, name, const$216, null); |
| + Element.call(this, name, kind, enclosing); |
| } |
| -FunctionElement.node$ctor = function(node, enclosing) { |
| +FunctionElement.node$ctor = function(node, kind, enclosing) { |
| this.node = node; |
| // Initializers done |
| - Element.call(this, node.name.get$dynamic().get$source(), const$216, enclosing); |
| + Element.call(this, node.name.asIdentifier().get$source(), kind, enclosing); |
| } |
| FunctionElement.node$ctor.prototype = FunctionElement.prototype; |
| $inherits(FunctionElement, Element); |
| @@ -7502,6 +7520,27 @@ |
| FunctionElement.prototype.computeType$2 = function($0, $1) { |
| return this.computeType(($0 == null ? null : $0.assert$Compiler()), $1); |
| }; |
| +// ********** Code for SynthesizedConstructorElement ************** |
| +function SynthesizedConstructorElement(enclosing) { |
| + // Initializers done |
| + FunctionElement.call(this, const$238/*const SourceString('')*/, const$239/*ElementKind.CONSTRUCTOR*/, enclosing); |
| + this.parameters = const$210/*const EmptyLink<Element>()*/; |
| +} |
| +$inherits(SynthesizedConstructorElement, FunctionElement); |
| +SynthesizedConstructorElement.prototype.computeType = function(compiler, types) { |
| + var $0; |
| + if (this.type != null) return (($0 = this.type) == null ? null : $0.assert$FunctionType()); |
| + this.type = new FunctionType((($0 = types.get$voidType()) == null ? null : $0.assert$Type()), const$213); |
| + return (($0 = this.type) == null ? null : $0.assert$FunctionType()); |
| +} |
| +SynthesizedConstructorElement.prototype.parseNode = function(canceler, logger) { |
| + if (this.node != null) return this.node; |
| + this.node = new FunctionExpression(new Identifier(new StringToken(null, '', null)), new NodeList.empty$ctor(), new Block(new NodeList.empty$ctor())); |
| + return this.node; |
| +} |
| +SynthesizedConstructorElement.prototype.computeType$2 = function($0, $1) { |
| + return this.computeType(($0 == null ? null : $0.assert$Compiler()), $1); |
| +}; |
| // ********** Code for ClassElement ************** |
| function ClassElement(name) { |
| this.interfaces = const$213/*const EmptyLink<Type>()*/ |
| @@ -7526,6 +7565,15 @@ |
| compiler.resolveType(this); |
| this.isResolved = true; |
| } |
| +ClassElement.prototype.lookupLocalElement = function(name) { |
| + return null; |
| +} |
| +ClassElement.prototype.canHaveDefaultConstructor = function() { |
| + return true; |
| +} |
| +ClassElement.prototype.addConstructor = function(element) { |
| + |
| +} |
| ClassElement.prototype.computeType$2 = ClassElement.prototype.computeType; |
| ClassElement.prototype.resolve$1 = function($0) { |
| return this.resolve(($0 == null ? null : $0.assert$Compiler())); |
| @@ -7843,7 +7891,7 @@ |
| return new StringWrapper(str.substring(quotes + 1, str.length - quotes)); |
| } |
| SsaBuilder.prototype.visitLogicalAndOr = function(node, op) { |
| - var isAnd = $assert_bool(($eq(const$278/*const SourceString("&&")*/, op.get$source()))); |
| + var isAnd = $assert_bool(($eq(const$284/*const SourceString("&&")*/, op.get$source()))); |
| this.visit(node.receiver); |
| var boolifiedLeft = this.popBoolified(); |
| var condition; |
| @@ -8008,10 +8056,10 @@ |
| var element = (($0 = this.elements.$index(node)) == null ? null : $0.assert$Element()); |
| if ((node.selector instanceof Operator)) { |
| var op = (($0 = node.selector) == null ? null : $0.assert$Operator()); |
| - if ($notnull_bool($eq(const$278/*const SourceString("&&")*/, op.get$source())) || $notnull_bool($eq(const$279/*const SourceString("||")*/, op.get$source()))) { |
| + if ($notnull_bool($eq(const$284/*const SourceString("&&")*/, op.get$source())) || $notnull_bool($eq(const$285/*const SourceString("||")*/, op.get$source()))) { |
| this.visitLogicalAndOr(node, op); |
| } |
| - else if ($notnull_bool($eq(const$280/*const SourceString("!")*/, op.get$source()))) { |
| + else if ($notnull_bool($eq(const$286/*const SourceString("!")*/, op.get$source()))) { |
| this.visitLogicalNot(node); |
| } |
| else if ((node.argumentsNode instanceof Prefix) || (node.argumentsNode instanceof Postfix)) { |
| @@ -8060,6 +8108,9 @@ |
| } |
| } |
| } |
| +SsaBuilder.prototype.visitNewExpression = function(node) { |
| + this.compiler.unimplemented("SsaBuilder: new expression"); |
| +} |
| SsaBuilder.prototype.updateDefinition = function(node, value) { |
| var $0; |
| var element = (($0 = this.elements.$index(node)) == null ? null : $0.assert$VariableElement()); |
| @@ -8073,14 +8124,14 @@ |
| this.compiler.unimplemented("SsaBuilder: property access"); |
| } |
| var op = node.assignmentOperator; |
| - if ($notnull_bool($eq(const$281/*const SourceString("=")*/, op.get$source()))) { |
| + if ($notnull_bool($eq(const$287/*const SourceString("=")*/, op.get$source()))) { |
| var link = node.get$arguments(); |
| - $assert(!$notnull_bool(link.isEmpty()) && $notnull_bool(link.get$tail().isEmpty$0()), "!link.isEmpty() && link.tail.isEmpty()", "builder.dart", 578, 14); |
| + $assert(!$notnull_bool(link.isEmpty()) && $notnull_bool(link.get$tail().isEmpty$0()), "!link.isEmpty() && link.tail.isEmpty()", "builder.dart", 582, 14); |
| this.visit((($0 = link.get$head()) == null ? null : $0.assert$Node())); |
| this.stack.add(this.updateDefinition(node, this.pop())); |
| } |
| else { |
| - $assert($notnull_bool($eq(const$284/*const SourceString("++")*/, op.get$source())) || $notnull_bool($eq(const$285/*const SourceString("--")*/, op.get$source())) || node.assignmentOperator.get$source().get$stringValue().endsWith("="), "const SourceString(\"++\") == op.source ||\n const SourceString(\"--\") == op.source ||\n node.assignmentOperator.source.stringValue.endsWith(\"=\")", "builder.dart", 582, 14); |
| + $assert($notnull_bool($eq(const$290/*const SourceString("++")*/, op.get$source())) || $notnull_bool($eq(const$291/*const SourceString("--")*/, op.get$source())) || node.assignmentOperator.get$source().get$stringValue().endsWith("="), "const SourceString(\"++\") == op.source ||\n const SourceString(\"--\") == op.source ||\n node.assignmentOperator.source.stringValue.endsWith(\"=\")", "builder.dart", 586, 14); |
| var isCompoundAssignment = !$notnull_bool(node.get$arguments().isEmpty()); |
| var isPrefix = !$notnull_bool(node.get$isPostfix()); |
| var getter = (($0 = this.elements.$index(node.selector)) == null ? null : $0.assert$Element()); |
| @@ -8097,7 +8148,7 @@ |
| var opElement = (($0 = this.elements.$index(op)) == null ? null : $0.assert$Element()); |
| this.visitBinary(left, op, right, opElement); |
| var operation = this.pop(); |
| - $assert(operation != null, "operation !== null", "builder.dart", 600, 14); |
| + $assert(operation != null, "operation !== null", "builder.dart", 604, 14); |
| operation = this.updateDefinition(node, operation); |
| if ($notnull_bool(isPrefix)) { |
| this.stack.add(operation); |
| @@ -8168,7 +8219,7 @@ |
| this.updateDefinition(definition, initialValue); |
| } |
| else { |
| - $assert((definition instanceof SendSet), "definition is SendSet", "builder.dart", 680, 16); |
| + $assert((definition instanceof SendSet), "definition is SendSet", "builder.dart", 684, 16); |
| this.visitSendSet((definition == null ? null : definition.assert$SendSet())); |
| this.pop(); |
| } |
| @@ -8584,10 +8635,10 @@ |
| var $0; |
| var name; |
| if ($notnull_bool(node.isNumber())) { |
| - name = const$301/*const SourceString('guard\$num')*/; |
| + name = const$307/*const SourceString('guard\$num')*/; |
| } |
| else if ($notnull_bool(node.isString())) { |
| - name = const$302/*const SourceString('guard\$string')*/; |
| + name = const$308/*const SourceString('guard\$string')*/; |
| } |
| else { |
| unreachable(); |
| @@ -8626,9 +8677,9 @@ |
| JsNames.get$reserved = function() { |
| if ($globals.JsNames__reserved == null) { |
| $globals.JsNames__reserved = new HashSetImplementation(); |
| - $globals.JsNames__reserved.addAll(const$295/*JsNames.reservedPropertySymbols*/); |
| - $globals.JsNames__reserved.addAll(const$297/*JsNames.reservedGlobalSymbols*/); |
| - $globals.JsNames__reserved.addAll(const$299/*JsNames.javaScriptKeywords*/); |
| + $globals.JsNames__reserved.addAll(const$301/*JsNames.reservedPropertySymbols*/); |
| + $globals.JsNames__reserved.addAll(const$303/*JsNames.reservedGlobalSymbols*/); |
| + $globals.JsNames__reserved.addAll(const$305/*JsNames.javaScriptKeywords*/); |
| } |
| return $globals.JsNames__reserved; |
| } |
| @@ -11959,7 +12010,7 @@ |
| var code = $assert_String(this.universe.generatedCode.$index(element)); |
| if (code != null) return code; |
| var tree = this.parser.parse(element); |
| - var elements = this.resolver.resolve((tree == null ? null : tree.assert$FunctionExpression())); |
| + var elements = this.resolver.resolve((tree == null ? null : tree.assert$FunctionExpression()), (element == null ? null : element.assert$FunctionElement())); |
| this.checker.check(tree, elements); |
| var graph = this.builder.build(tree, elements); |
| this.optimizer.optimize(graph); |
| @@ -11969,11 +12020,11 @@ |
| } |
| Compiler.prototype.resolveType = function(element) { |
| var $0; |
| - this.resolver.resolveType((($0 = this.parser.parse(element)) == null ? null : $0.assert$ClassNode())); |
| + this.resolver.resolveType((($0 = this.parser.parse(element)) == null ? null : $0.assert$ClassNode()), element); |
| } |
| Compiler.prototype.resolveSignature = function(element) { |
| var $0; |
| - this.resolver.resolveSignature((($0 = this.parser.parse(element)) == null ? null : $0.assert$FunctionExpression())); |
| + this.resolver.resolveSignature((($0 = this.parser.parse(element)) == null ? null : $0.assert$FunctionExpression()), element); |
| } |
| Compiler.prototype.assembleProgram = function() { |
| var buffer = new StringBufferImpl(""); |
| @@ -12050,11 +12101,11 @@ |
| ResolverTask.prototype.get$name = function() { |
| return 'Resolver'; |
| } |
| -ResolverTask.prototype.resolve = function(tree) { |
| +ResolverTask.prototype.resolve = function(tree, element) { |
| var $this = this; // closure support |
| var $0; |
| return (($0 = this.measure((function () { |
| - var visitor = new SignatureResolverVisitor($this.compiler); |
| + var visitor = new SignatureResolverVisitor($this.compiler, element); |
| visitor.visit(tree); |
| visitor = new FullResolverVisitor.from$ctor(visitor); |
| visitor.visit(tree.body); |
| @@ -12065,7 +12116,7 @@ |
| }) |
| )) == null ? null : $0.assert$TreeElements()); |
| } |
| -ResolverTask.prototype.resolveType = function(tree) { |
| +ResolverTask.prototype.resolveType = function(tree, element) { |
| var $this = this; // closure support |
| this.measure((function () { |
| var visitor = new ClassResolverVisitor($this.compiler); |
| @@ -12073,22 +12124,20 @@ |
| }) |
| ); |
| } |
| -ResolverTask.prototype.resolveSignature = function(node) { |
| +ResolverTask.prototype.resolveSignature = function(node, element) { |
| var $this = this; // closure support |
| this.measure((function () { |
| - var visitor = new SignatureResolverVisitor($this.compiler); |
| + var visitor = new SignatureResolverVisitor($this.compiler, element); |
| visitor.visitFunctionExpression(node); |
| }) |
| ); |
| } |
| -ResolverTask.prototype.resolve$1 = function($0) { |
| - return this.resolve(($0 == null ? null : $0.assert$FunctionExpression())); |
| -}; |
| // ********** Code for ResolverVisitor ************** |
| -function ResolverVisitor(compiler) { |
| +function ResolverVisitor(compiler, element) { |
| + var $0; |
| this.compiler = compiler; |
| this.mapping = new TreeElements(); |
| - this.context = new Scope(new TopScope(compiler.universe)); |
| + this.context = $notnull_bool(element.isClassMember()) ? new ClassScope((($0 = element.enclosingElement) == null ? null : $0.assert$ClassElement()), compiler.universe) : new TopScope(compiler.universe); |
| // Initializers done |
| } |
| ResolverVisitor.from$ctor = function(other) { |
| @@ -12156,29 +12205,31 @@ |
| return this.visit(($0 == null ? null : $0.assert$Node())); |
| }; |
| // ********** Code for SignatureResolverVisitor ************** |
| -function SignatureResolverVisitor(compiler) { |
| +function SignatureResolverVisitor(compiler, element) { |
| + this.element = element; |
| // Initializers done |
| - ResolverVisitor.call(this, compiler); |
| + ResolverVisitor.call(this, compiler, element); |
| } |
| $inherits(SignatureResolverVisitor, ResolverVisitor); |
| +SignatureResolverVisitor.prototype.get$element = function() { return this.element; }; |
| +SignatureResolverVisitor.prototype.set$element = function(value) { return this.element = value; }; |
| SignatureResolverVisitor.prototype.visitFunctionExpression = function(node) { |
| var $0; |
| - var enclosingElement = (($0 = this.context.lookup((($0 = node.name.get$dynamic().get$source()) == null ? null : $0.assert$SourceString()))) == null ? null : $0.assert$FunctionElement()); |
| - this.useElement(node, enclosingElement); |
| - this.context = new Scope.enclosing$ctor(this.context, enclosingElement); |
| - if (enclosingElement.parameters == null) { |
| + this.useElement(node, this.element); |
| + this.context = new Scope.enclosing$ctor(this.context, this.element); |
| + if (this.element.parameters == null) { |
| var visitor = new ParametersVisitor(this); |
| visitor.visit(node.parameters); |
| - enclosingElement.parameters = (($0 = visitor.elements.toLink()) == null ? null : $0.assert$Link_Element()); |
| + this.element.parameters = (($0 = visitor.elements.toLink()) == null ? null : $0.assert$Link_Element()); |
| } |
| else { |
| var parameterNodes = node.parameters.get$nodes(); |
| - for (var link = enclosingElement.parameters; |
| + for (var link = this.element.parameters; |
| !$notnull_bool(link.isEmpty()) && !$notnull_bool(parameterNodes.isEmpty()); link = (($0 = link.get$tail()) == null ? null : $0.assert$Link_Element()), parameterNodes = (($0 = parameterNodes.get$tail()) == null ? null : $0.assert$Link_Node())) { |
| this.defineElement((($0 = parameterNodes.get$head().get$definitions().get$nodes().get$head()) == null ? null : $0.assert$Node()), (($0 = link.get$head()) == null ? null : $0.assert$Element())); |
| } |
| } |
| - return enclosingElement; |
| + return this.element; |
| } |
| // ********** Code for FullResolverVisitor ************** |
| function FullResolverVisitor() {} |
| @@ -12218,7 +12269,7 @@ |
| FullResolverVisitor.prototype.visitFunctionExpression = function(node) { |
| var $0; |
| this.visit(node.returnType); |
| - var enclosingElement = new FunctionElement.node$ctor(node, this.context.enclosingElement); |
| + var enclosingElement = new FunctionElement.node$ctor(node, const$216/*ElementKind.FUNCTION*/, this.context.enclosingElement); |
| this.defineElement(node, enclosingElement); |
| this.context = new Scope.enclosing$ctor(this.context, enclosingElement); |
| var visitor = new ParametersVisitor(this); |
| @@ -12239,42 +12290,42 @@ |
| } |
| FullResolverVisitor.prototype.mapOperatorToMethodName = function(name, isPrefix) { |
| if ($notnull_bool(isPrefix)) { |
| - if (name.get$stringValue() === '-') return const$237/*const SourceString('neg')*/; |
| - if (name.get$stringValue() === '~') return const$238/*const SourceString('not')*/; |
| + if (name.get$stringValue() === '-') return const$243/*const SourceString('neg')*/; |
| + if (name.get$stringValue() === '~') return const$244/*const SourceString('not')*/; |
| unreachable(); |
| } |
| - if (name.get$stringValue() === '+') return const$240/*const SourceString('add')*/; |
| - if (name.get$stringValue() === '-') return const$241/*const SourceString('sub')*/; |
| - if (name.get$stringValue() === '*') return const$242/*const SourceString('mul')*/; |
| - if (name.get$stringValue() === '/') return const$243/*const SourceString('div')*/; |
| - if (name.get$stringValue() === '~/') return const$244/*const SourceString('tdiv')*/; |
| - if (name.get$stringValue() === '%') return const$245/*const SourceString('mod')*/; |
| - if (name.get$stringValue() === '<<') return const$246/*const SourceString('shl')*/; |
| - if (name.get$stringValue() === '>>') return const$247/*const SourceString('shr')*/; |
| - if (name.get$stringValue() === '|') return const$248/*const SourceString('or')*/; |
| - if (name.get$stringValue() === '&') return const$249/*const SourceString('and')*/; |
| - if (name.get$stringValue() === '^') return const$250/*const SourceString('xor')*/; |
| - if (name.get$stringValue() === '<') return const$251/*const SourceString('lt')*/; |
| - if (name.get$stringValue() === '<=') return const$252/*const SourceString('le')*/; |
| - if (name.get$stringValue() === '>') return const$253/*const SourceString('gt')*/; |
| - if (name.get$stringValue() === '>=') return const$254/*const SourceString('ge')*/; |
| - if (name.get$stringValue() === '==') return const$255/*const SourceString('eq')*/; |
| + if (name.get$stringValue() === '+') return const$246/*const SourceString('add')*/; |
| + if (name.get$stringValue() === '-') return const$247/*const SourceString('sub')*/; |
| + if (name.get$stringValue() === '*') return const$248/*const SourceString('mul')*/; |
| + if (name.get$stringValue() === '/') return const$249/*const SourceString('div')*/; |
| + if (name.get$stringValue() === '~/') return const$250/*const SourceString('tdiv')*/; |
| + if (name.get$stringValue() === '%') return const$251/*const SourceString('mod')*/; |
| + if (name.get$stringValue() === '<<') return const$252/*const SourceString('shl')*/; |
| + if (name.get$stringValue() === '>>') return const$253/*const SourceString('shr')*/; |
| + if (name.get$stringValue() === '|') return const$254/*const SourceString('or')*/; |
| + if (name.get$stringValue() === '&') return const$255/*const SourceString('and')*/; |
| + if (name.get$stringValue() === '^') return const$256/*const SourceString('xor')*/; |
| + if (name.get$stringValue() === '<') return const$257/*const SourceString('lt')*/; |
| + if (name.get$stringValue() === '<=') return const$258/*const SourceString('le')*/; |
| + if (name.get$stringValue() === '>') return const$259/*const SourceString('gt')*/; |
| + if (name.get$stringValue() === '>=') return const$260/*const SourceString('ge')*/; |
| + if (name.get$stringValue() === '==') return const$261/*const SourceString('eq')*/; |
| unreachable(); |
| } |
| FullResolverVisitor.prototype.mapAssignmentOperatorToMethodName = function(name) { |
| - if (name.get$stringValue() === '+=') return const$240/*const SourceString('add')*/; |
| - if (name.get$stringValue() === '-=') return const$241/*const SourceString('sub')*/; |
| - if (name.get$stringValue() === '*=') return const$242/*const SourceString('mul')*/; |
| - if (name.get$stringValue() === '/=') return const$243/*const SourceString('div')*/; |
| - if (name.get$stringValue() === '~/=') return const$244/*const SourceString('tdiv')*/; |
| - if (name.get$stringValue() === '%=') return const$245/*const SourceString('mod')*/; |
| - if (name.get$stringValue() === '<<=') return const$246/*const SourceString('shl')*/; |
| - if (name.get$stringValue() === '>>=') return const$247/*const SourceString('shr')*/; |
| - if (name.get$stringValue() === '|=') return const$248/*const SourceString('or')*/; |
| - if (name.get$stringValue() === '&=') return const$249/*const SourceString('and')*/; |
| - if (name.get$stringValue() === '^=') return const$250/*const SourceString('xor')*/; |
| - if (name.get$stringValue() === '++') return const$240/*const SourceString('add')*/; |
| - if (name.get$stringValue() === '--') return const$241/*const SourceString('sub')*/; |
| + if (name.get$stringValue() === '+=') return const$246/*const SourceString('add')*/; |
| + if (name.get$stringValue() === '-=') return const$247/*const SourceString('sub')*/; |
| + if (name.get$stringValue() === '*=') return const$248/*const SourceString('mul')*/; |
| + if (name.get$stringValue() === '/=') return const$249/*const SourceString('div')*/; |
| + if (name.get$stringValue() === '~/=') return const$250/*const SourceString('tdiv')*/; |
| + if (name.get$stringValue() === '%=') return const$251/*const SourceString('mod')*/; |
| + if (name.get$stringValue() === '<<=') return const$252/*const SourceString('shl')*/; |
| + if (name.get$stringValue() === '>>=') return const$253/*const SourceString('shr')*/; |
| + if (name.get$stringValue() === '|=') return const$254/*const SourceString('or')*/; |
| + if (name.get$stringValue() === '&=') return const$255/*const SourceString('and')*/; |
| + if (name.get$stringValue() === '^=') return const$256/*const SourceString('xor')*/; |
| + if (name.get$stringValue() === '++') return const$246/*const SourceString('add')*/; |
| + if (name.get$stringValue() === '--') return const$247/*const SourceString('sub')*/; |
| unreachable(); |
| } |
| FullResolverVisitor.prototype.visitSend = function(node) { |
| @@ -12351,7 +12402,7 @@ |
| } |
| FullResolverVisitor.prototype.visitVariableDefinitions = function(node) { |
| this.visit(node.type); |
| - var visitor = new VariableDefinitionsVisitor(node, this, const$256/*ElementKind.VARIABLE*/); |
| + var visitor = new VariableDefinitionsVisitor(node, this, const$262/*ElementKind.VARIABLE*/); |
| visitor.visit(node.definitions); |
| } |
| FullResolverVisitor.prototype.visitWhile = function(node) { |
| @@ -12362,7 +12413,22 @@ |
| this.visit(node.expression); |
| } |
| FullResolverVisitor.prototype.visitNewExpression = function(node) { |
| - this.cancel(node, "Unimplemented"); |
| + var $0; |
| + this.visit(node.send.argumentsNode); |
| + var cls = (($0 = this.visit(node.send.selector)) == null ? null : $0.assert$ClassElement()); |
| + var name = const$237/*const SourceString("")*/; |
| + var constructor = null; |
| + if (cls != null) { |
| + var constructor0 = cls.lookupLocalElement(name); |
| + if (name.get$stringValue() === '' && constructor0 == null && $notnull_bool(node.send.argumentsNode.isEmpty()) && $notnull_bool(cls.canHaveDefaultConstructor())) { |
| + constructor0 = new SynthesizedConstructorElement(cls); |
| + cls.addConstructor(constructor0); |
| + } |
| + if (constructor0 == null) { |
| + this.error(node, const$241/*MessageKind.CANNOT_FIND_CONSTRUCTOR*/, [node]); |
| + } |
| + } |
| + return this.useElement(node, constructor); |
| } |
| // ********** Code for ClassResolverVisitor ************** |
| function ClassResolverVisitor(compiler) { |
| @@ -12426,7 +12492,7 @@ |
| VariableDefinitionsVisitor.prototype.set$kind = function(value) { return this.kind = value; }; |
| VariableDefinitionsVisitor.prototype.visitSendSet = function(node) { |
| var $0; |
| - $assert(node.get$arguments().get$tail().isEmpty$0(), "node.arguments.tail.isEmpty()", "resolver.dart", 443, 12); |
| + $assert(node.get$arguments().get$tail().isEmpty$0(), "node.arguments.tail.isEmpty()", "resolver.dart", 455, 12); |
| if (node.receiver != null) { |
| this.resolver.cancel(node, "receiver on a variable definition not implemented"); |
| } |
| @@ -12519,6 +12585,30 @@ |
| Scope.prototype.lookup$1 = function($0) { |
| return this.lookup(($0 == null ? null : $0.assert$SourceString())); |
| }; |
| +// ********** Code for ClassScope ************** |
| +function ClassScope(element, universe) { |
| + // Initializers done |
| + Scope.enclosing$ctor.call(this, new TopScope(universe), element); |
| +} |
| +$inherits(ClassScope, Scope); |
| +ClassScope.prototype.lookup = function(name) { |
| + var $0; |
| + var cls = (($0 = this.enclosingElement) == null ? null : $0.assert$ClassElement()); |
| + var element = cls.lookupLocalElement(name); |
| + if (element != null) return element; |
| + element = this.parent.lookup(name); |
| + if (element != null) return element; |
| + return null; |
| +} |
| +ClassScope.prototype.add = function(element) { |
| + $throw("Cannot add an element in a class scope"); |
| +} |
| +ClassScope.prototype.add$1 = function($0) { |
| + return this.add(($0 == null ? null : $0.assert$Element())); |
| +}; |
| +ClassScope.prototype.lookup$1 = function($0) { |
| + return this.lookup(($0 == null ? null : $0.assert$SourceString())); |
| +}; |
| // ********** Code for TopScope ************** |
| function TopScope(universe) { |
| this.universe = universe; |
| @@ -12568,7 +12658,7 @@ |
| } catch (e) { |
| e = _toDartException(e); |
| if (!(e instanceof CancelTypeCheckException)) throw e; |
| - $this.compiler.reportWarning(e.node, new TypeWarning(const$272/*MessageKind.GENERIC*/, [e.reason])); |
| + $this.compiler.reportWarning(e.node, new TypeWarning(const$278/*MessageKind.GENERIC*/, [e.reason])); |
| } |
| }) |
| ); |
| @@ -12622,6 +12712,7 @@ |
| // Initializers done |
| } |
| Types.prototype.assert$Types = function(){return this}; |
| +Types.prototype.get$voidType = function() { return this.voidType; }; |
| Types.prototype.get$dynamicType = function() { return this.dynamicType; }; |
| Types.prototype.lookup = function(s) { |
| if ($notnull_bool($eq(const$6/*Types.VOID*/, s))) { |
| @@ -12685,7 +12776,7 @@ |
| TypeCheckerVisitor.prototype.nonVoidType = function(node) { |
| var type = this.type(node); |
| if ($eq(type, this.types.voidType)) { |
| - this.reportTypeWarning(node, const$270/*MessageKind.VOID_EXPRESSION*/, const$21/*const []*/); |
| + this.reportTypeWarning(node, const$276/*MessageKind.VOID_EXPRESSION*/, const$21/*const []*/); |
| } |
| return type; |
| } |
| @@ -12703,7 +12794,7 @@ |
| } |
| TypeCheckerVisitor.prototype.checkAssignable = function(node, s, t) { |
| if (!$notnull_bool(this.types.isAssignable(s, t))) { |
| - this.reportTypeWarning(node, const$258/*MessageKind.NOT_ASSIGNABLE*/, [s, t]); |
| + this.reportTypeWarning(node, const$264/*MessageKind.NOT_ASSIGNABLE*/, [s, t]); |
| } |
| } |
| TypeCheckerVisitor.prototype.checkCondition = function(condition) { |
| @@ -12796,10 +12887,10 @@ |
| arguments = (($0 = arguments.get$tail()) == null ? null : $0.assert$Link_Node()); |
| } |
| if (!$notnull_bool(formals.isEmpty())) { |
| - this.reportTypeWarning(node, const$264/*MessageKind.MISSING_ARGUMENT*/, const$21/*const []*/); |
| + this.reportTypeWarning(node, const$270/*MessageKind.MISSING_ARGUMENT*/, const$21/*const []*/); |
| } |
| if (!$notnull_bool(arguments.isEmpty())) { |
| - this.reportTypeWarning(node, const$266/*MessageKind.ADDITIONAL_ARGUMENT*/, const$21/*const []*/); |
| + this.reportTypeWarning(node, const$272/*MessageKind.ADDITIONAL_ARGUMENT*/, const$21/*const []*/); |
| } |
| return funType.returnType; |
| } |
| @@ -12852,6 +12943,9 @@ |
| TypeCheckerVisitor.prototype.visitLiteralNull = function(node) { |
| return this.types.dynamicType; |
| } |
| +TypeCheckerVisitor.prototype.visitNewExpression = function(node) { |
| + return this.types.dynamicType; |
| +} |
| TypeCheckerVisitor.prototype.visitNodeList = function(node) { |
| var $0; |
| for (var link = node.get$nodes(); |
| @@ -12869,14 +12963,14 @@ |
| if (expression != null) { |
| var expressionType = this.type(expression); |
| if (isVoidFunction && !$notnull_bool(this.types.isAssignable(expressionType, this.types.voidType))) { |
| - this.reportTypeWarning(expression, const$260/*MessageKind.RETURN_VALUE_IN_VOID*/, [expressionType]); |
| + this.reportTypeWarning(expression, const$266/*MessageKind.RETURN_VALUE_IN_VOID*/, [expressionType]); |
| } |
| else { |
| this.checkAssignable(expression, this.expectedReturnType, expressionType); |
| } |
| } |
| else if (!$notnull_bool(this.types.isAssignable(this.expectedReturnType, this.types.voidType))) { |
| - this.reportTypeWarning(node, const$262/*MessageKind.RETURN_NOTHING*/, [this.expectedReturnType]); |
| + this.reportTypeWarning(node, const$268/*MessageKind.RETURN_NOTHING*/, [this.expectedReturnType]); |
| } |
| return null; |
| } |
| @@ -12904,7 +12998,7 @@ |
| var $0; |
| var type = this.typeWithDefault(node.type, this.types.dynamicType); |
| if ($eq(type, this.types.voidType)) { |
| - this.reportTypeWarning(node.type, const$268/*MessageKind.VOID_VARIABLE*/, const$21/*const []*/); |
| + this.reportTypeWarning(node.type, const$274/*MessageKind.VOID_VARIABLE*/, const$21/*const []*/); |
| type = this.types.dynamicType; |
| } |
| for (var link = node.definitions.get$nodes(); |
| @@ -13007,7 +13101,7 @@ |
| ResolutionWarning.prototype.toString$0 = ResolutionWarning.prototype.toString; |
| // ********** Code for top level ************** |
| function unreachable() { |
| - $throw(const$239/*const Exception("Internal Error (Leg): UNREACHABLE")*/); |
| + $throw(const$245/*const Exception("Internal Error (Leg): UNREACHABLE")*/); |
| } |
| // ********** Library frog_leg ************** |
| // ********** Code for WorldCompiler ************** |
| @@ -17580,7 +17674,6 @@ |
| } |
| lang_Token.prototype.assert$lang_Token = function(){return this}; |
| lang_Token.prototype.get$kind = function() { return this.kind; }; |
| -lang_Token.prototype.get$source = function() { return this.source; }; |
| lang_Token.prototype.get$end = function() { return this.end; }; |
| lang_Token.prototype.get$start = function() { return this.start; }; |
| lang_Token.prototype.get$text = function() { |
| @@ -19475,7 +19568,6 @@ |
| this._inInitializers = false; |
| this._afterParens = []; |
| } |
| -lang_Parser.prototype.get$source = function() { return this.source; }; |
| lang_Parser.prototype.get$enableAwait = function() { |
| return $globals.experimentalAwaitPhase != null; |
| } |
| @@ -23897,6 +23989,8 @@ |
| } |
| World.prototype.get$dynamicType = function() { return this.dynamicType; }; |
| World.prototype.set$dynamicType = function(value) { return this.dynamicType = value; }; |
| +World.prototype.get$voidType = function() { return this.voidType; }; |
| +World.prototype.set$voidType = function(value) { return this.voidType = value; }; |
| World.prototype.get$functionType = function() { return this.functionType; }; |
| World.prototype.set$functionType = function(value) { return this.functionType = value; }; |
| World.prototype.init = function() { |
| @@ -24722,49 +24816,54 @@ |
| var const$234 = new MessageKind('duplicate definition of #{1}')/*const MessageKind( |
| 'duplicate definition of #{1}')*/; |
| var const$236 = new LinkTail()/*const LinkTail()*/; |
| -var const$237 = new StringWrapper('neg')/*const SourceString('neg')*/; |
| -var const$238 = new StringWrapper('not')/*const SourceString('not')*/; |
| -var const$239 = new ExceptionImplementation("Internal Error (Leg): UNREACHABLE")/*const Exception("Internal Error (Leg): UNREACHABLE")*/; |
| -var const$240 = new StringWrapper('add')/*const SourceString('add')*/; |
| -var const$241 = new StringWrapper('sub')/*const SourceString('sub')*/; |
| -var const$242 = new StringWrapper('mul')/*const SourceString('mul')*/; |
| -var const$243 = new StringWrapper('div')/*const SourceString('div')*/; |
| -var const$244 = new StringWrapper('tdiv')/*const SourceString('tdiv')*/; |
| -var const$245 = new StringWrapper('mod')/*const SourceString('mod')*/; |
| -var const$246 = new StringWrapper('shl')/*const SourceString('shl')*/; |
| -var const$247 = new StringWrapper('shr')/*const SourceString('shr')*/; |
| -var const$248 = new StringWrapper('or')/*const SourceString('or')*/; |
| -var const$249 = new StringWrapper('and')/*const SourceString('and')*/; |
| -var const$250 = new StringWrapper('xor')/*const SourceString('xor')*/; |
| -var const$251 = new StringWrapper('lt')/*const SourceString('lt')*/; |
| -var const$252 = new StringWrapper('le')/*const SourceString('le')*/; |
| -var const$253 = new StringWrapper('gt')/*const SourceString('gt')*/; |
| -var const$254 = new StringWrapper('ge')/*const SourceString('ge')*/; |
| -var const$255 = new StringWrapper('eq')/*const SourceString('eq')*/; |
| -var const$256 = new ElementKind('variable')/*const ElementKind('variable')*/; |
| -var const$258 = new MessageKind('#{2} is not assignable to #{1}')/*const MessageKind( |
| +var const$237 = new StringWrapper("")/*const SourceString("")*/; |
| +var const$238 = new StringWrapper('')/*const SourceString('')*/; |
| +var const$239 = new ElementKind('constructor')/*const ElementKind('constructor')*/; |
| +var const$241 = new MessageKind('cannot find constructor #{1}')/*const MessageKind( |
| + 'cannot find constructor #{1}')*/; |
| +var const$243 = new StringWrapper('neg')/*const SourceString('neg')*/; |
| +var const$244 = new StringWrapper('not')/*const SourceString('not')*/; |
| +var const$245 = new ExceptionImplementation("Internal Error (Leg): UNREACHABLE")/*const Exception("Internal Error (Leg): UNREACHABLE")*/; |
| +var const$246 = new StringWrapper('add')/*const SourceString('add')*/; |
| +var const$247 = new StringWrapper('sub')/*const SourceString('sub')*/; |
| +var const$248 = new StringWrapper('mul')/*const SourceString('mul')*/; |
| +var const$249 = new StringWrapper('div')/*const SourceString('div')*/; |
| +var const$250 = new StringWrapper('tdiv')/*const SourceString('tdiv')*/; |
| +var const$251 = new StringWrapper('mod')/*const SourceString('mod')*/; |
| +var const$252 = new StringWrapper('shl')/*const SourceString('shl')*/; |
| +var const$253 = new StringWrapper('shr')/*const SourceString('shr')*/; |
| +var const$254 = new StringWrapper('or')/*const SourceString('or')*/; |
| +var const$255 = new StringWrapper('and')/*const SourceString('and')*/; |
| +var const$256 = new StringWrapper('xor')/*const SourceString('xor')*/; |
| +var const$257 = new StringWrapper('lt')/*const SourceString('lt')*/; |
| +var const$258 = new StringWrapper('le')/*const SourceString('le')*/; |
| +var const$259 = new StringWrapper('gt')/*const SourceString('gt')*/; |
| +var const$260 = new StringWrapper('ge')/*const SourceString('ge')*/; |
| +var const$261 = new StringWrapper('eq')/*const SourceString('eq')*/; |
| +var const$262 = new ElementKind('variable')/*const ElementKind('variable')*/; |
| +var const$264 = new MessageKind('#{2} is not assignable to #{1}')/*const MessageKind( |
| '#{2} is not assignable to #{1}')*/; |
| -var const$260 = new MessageKind('cannot return value from void function')/*const MessageKind( |
| +var const$266 = new MessageKind('cannot return value from void function')/*const MessageKind( |
| 'cannot return value from void function')*/; |
| -var const$262 = new MessageKind('value of type #{1} expected')/*const MessageKind( |
| +var const$268 = new MessageKind('value of type #{1} expected')/*const MessageKind( |
| 'value of type #{1} expected')*/; |
| -var const$264 = new MessageKind('missing argument')/*const MessageKind( |
| +var const$270 = new MessageKind('missing argument')/*const MessageKind( |
| 'missing argument')*/; |
| -var const$266 = new MessageKind('additional argument')/*const MessageKind( |
| +var const$272 = new MessageKind('additional argument')/*const MessageKind( |
| 'additional argument')*/; |
| -var const$268 = new MessageKind('variable cannot be of type void')/*const MessageKind( |
| +var const$274 = new MessageKind('variable cannot be of type void')/*const MessageKind( |
| 'variable cannot be of type void')*/; |
| -var const$270 = new MessageKind('expression does not yield a value')/*const MessageKind( |
| +var const$276 = new MessageKind('expression does not yield a value')/*const MessageKind( |
| 'expression does not yield a value')*/; |
| -var const$272 = new MessageKind('#{1}')/*const MessageKind('#{1}')*/; |
| -var const$278 = new StringWrapper("&&")/*const SourceString("&&")*/; |
| -var const$279 = new StringWrapper("||")/*const SourceString("||")*/; |
| -var const$280 = new StringWrapper("!")/*const SourceString("!")*/; |
| -var const$281 = new StringWrapper("=")/*const SourceString("=")*/; |
| -var const$284 = new StringWrapper("++")/*const SourceString("++")*/; |
| -var const$285 = new StringWrapper("--")/*const SourceString("--")*/; |
| -var const$295 = ImmutableList.ImmutableList$from$factory(["__PROTO__", "prototype"])/*const <String>["__PROTO__", "prototype"]*/; |
| -var const$297 = ImmutableList.ImmutableList$from$factory(["NaN", "Infinity", "undefined", "eval", "parseInt", "parseFloat", "isNan", "isFinite", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "Object", "Function", "Array", "String", "Boolean", "Number", "Date", "RegExp", "Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError", "Math", "arguments", "escape", "unescape", "applicationCache", "closed", "Components", "content", "controllers", "crypto", "defaultStatus", "dialogArguments", "directories", "document", "frameElement", "frames", "fullScreen", "globalStorage", "history", "innerHeight", "innerWidth", "length", "location", "locationbar", "localStorage", "menubar", "mozInnerScreenX", "mozInnerScreenY", "mozScreenPixelsPerCssPixel", "name", "navigator", "opener", "outerHeight", "outerWidth", "pageXOffset", "pageYOffset", "parent", "personalbar", "pkcs11", "returnValue", "screen", "scrollbars", "scrollMaxX", "scrollMaxY", "self", "sessionStorage", "sidebar", "status", "statusbar", "toolbar", "top", "window", "alert", "addEventListener", "atob", "back", "blur", "btoa", "captureEvents", "clearInterval", "clearTimeout", "close", "confirm", "disableExternalCapture", "dispatchEvent", "dump", "enableExternalCapture", "escape", "find", "focus", "forward", "GeckoActiveXObject", "getAttention", "getAttentionWithCycleCount", "getComputedStyle", "getSelection", "home", "maximize", "minimize", "moveBy", "moveTo", "open", "openDialog", "postMessage", "print", "prompt", "QueryInterface", "releaseEvents", "removeEventListener", "resizeBy", "resizeTo", "restore", "routeEvent", "scroll", "scrollBy", "scrollByLines", "scrollByPages", "scrollTo", "setInterval", "setResizeable", "setTimeout", "showModalDialog", "sizeToContent", "stop", "uuescape", "updateCommands", "XPCNativeWrapper", "XPCSafeJSOjbectWrapper", "onabort", "onbeforeunload", "onchange", "onclick", "onclose", "oncontextmenu", "ondragdrop", "onerror", "onfocus", "onhashchange", "onkeydown", "onkeypress", "onkeyup", "onload", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmozorientation", "onpaint", "onreset", "onresize", "onscroll", "onselect", "onsubmit", "onunload", "ontouchcancel", "ontouchend", "ontouchmove", "ontouchstart", "ongesturestart", "ongesturechange", "ongestureend", "uneval", "getPrototypeOf", "let", "yield", "abstract", "int", "short", "boolean", "interface", "static", "byte", "long", "char", "final", "native", "synchronized", "float", "package", "throws", "goto", "private", "transient", "implements", "protected", "volatile", "double", "public", "attachEvent", "clientInformation", "clipboardData", "createPopup", "dialogHeight", "dialogLeft", "dialogTop", "dialogWidth", "onafterprint", "onbeforedeactivate", "onbeforeprint", "oncontrolselect", "ondeactivate", "onhelp", "onresizeend", "event", "external", "Debug", "Enumerator", "Global", "Image", "ActiveXObject", "VBArray", "Components", "toString", "getClass", "constructor", "prototype", "valueOf", "Anchor", "Applet", "Attr", "Canvas", "CanvasGradient", "CanvasPattern", "CanvasRenderingContext2D", "CDATASection", "CharacterData", "Comment", "CSS2Properties", "CSSRule", "CSSStyleSheet", "Document", "DocumentFragment", "DocumentType", "DOMException", "DOMImplementation", "DOMParser", "Element", "Event", "ExternalInterface", "FlashPlayer", "Form", "Frame", "History", "HTMLCollection", "HTMLDocument", "HTMLElement", "IFrame", "Image", "Input", "JSObject", "KeyEvent", "Link", "Location", "MimeType", "MouseEvent", "Navigator", "Node", "NodeList", "Option", "Plugin", "ProcessingInstruction", "Range", "RangeException", "Screen", "Select", "Table", "TableCell", "TableRow", "TableSelection", "Text", "TextArea", "UIEvent", "Window", "XMLHttpRequest", "XMLSerializer", "XPathException", "XPathResult", "XSLTProcessor", "java", "Packages", "netscape", "sun", "JavaObject", "JavaClass", "JavaArray", "JavaMember", "\$wnd", "\$doc", "\$entry", "\$moduleName", "\$moduleBase", "\$gwt_version", "\$sessionId", "\$stack", "\$stackDepth", "\$location", "call"])/*const <String>[ |
| +var const$278 = new MessageKind('#{1}')/*const MessageKind('#{1}')*/; |
| +var const$284 = new StringWrapper("&&")/*const SourceString("&&")*/; |
| +var const$285 = new StringWrapper("||")/*const SourceString("||")*/; |
| +var const$286 = new StringWrapper("!")/*const SourceString("!")*/; |
| +var const$287 = new StringWrapper("=")/*const SourceString("=")*/; |
| +var const$290 = new StringWrapper("++")/*const SourceString("++")*/; |
| +var const$291 = new StringWrapper("--")/*const SourceString("--")*/; |
| +var const$301 = ImmutableList.ImmutableList$from$factory(["__PROTO__", "prototype"])/*const <String>["__PROTO__", "prototype"]*/; |
| +var const$303 = ImmutableList.ImmutableList$from$factory(["NaN", "Infinity", "undefined", "eval", "parseInt", "parseFloat", "isNan", "isFinite", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "Object", "Function", "Array", "String", "Boolean", "Number", "Date", "RegExp", "Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError", "Math", "arguments", "escape", "unescape", "applicationCache", "closed", "Components", "content", "controllers", "crypto", "defaultStatus", "dialogArguments", "directories", "document", "frameElement", "frames", "fullScreen", "globalStorage", "history", "innerHeight", "innerWidth", "length", "location", "locationbar", "localStorage", "menubar", "mozInnerScreenX", "mozInnerScreenY", "mozScreenPixelsPerCssPixel", "name", "navigator", "opener", "outerHeight", "outerWidth", "pageXOffset", "pageYOffset", "parent", "personalbar", "pkcs11", "returnValue", "screen", "scrollbars", "scrollMaxX", "scrollMaxY", "self", "sessionStorage", "sidebar", "status", "statusbar", "toolbar", "top", "window", "alert", "addEventListener", "atob", "back", "blur", "btoa", "captureEvents", "clearInterval", "clearTimeout", "close", "confirm", "disableExternalCapture", "dispatchEvent", "dump", "enableExternalCapture", "escape", "find", "focus", "forward", "GeckoActiveXObject", "getAttention", "getAttentionWithCycleCount", "getComputedStyle", "getSelection", "home", "maximize", "minimize", "moveBy", "moveTo", "open", "openDialog", "postMessage", "print", "prompt", "QueryInterface", "releaseEvents", "removeEventListener", "resizeBy", "resizeTo", "restore", "routeEvent", "scroll", "scrollBy", "scrollByLines", "scrollByPages", "scrollTo", "setInterval", "setResizeable", "setTimeout", "showModalDialog", "sizeToContent", "stop", "uuescape", "updateCommands", "XPCNativeWrapper", "XPCSafeJSOjbectWrapper", "onabort", "onbeforeunload", "onchange", "onclick", "onclose", "oncontextmenu", "ondragdrop", "onerror", "onfocus", "onhashchange", "onkeydown", "onkeypress", "onkeyup", "onload", "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmozorientation", "onpaint", "onreset", "onresize", "onscroll", "onselect", "onsubmit", "onunload", "ontouchcancel", "ontouchend", "ontouchmove", "ontouchstart", "ongesturestart", "ongesturechange", "ongestureend", "uneval", "getPrototypeOf", "let", "yield", "abstract", "int", "short", "boolean", "interface", "static", "byte", "long", "char", "final", "native", "synchronized", "float", "package", "throws", "goto", "private", "transient", "implements", "protected", "volatile", "double", "public", "attachEvent", "clientInformation", "clipboardData", "createPopup", "dialogHeight", "dialogLeft", "dialogTop", "dialogWidth", "onafterprint", "onbeforedeactivate", "onbeforeprint", "oncontrolselect", "ondeactivate", "onhelp", "onresizeend", "event", "external", "Debug", "Enumerator", "Global", "Image", "ActiveXObject", "VBArray", "Components", "toString", "getClass", "constructor", "prototype", "valueOf", "Anchor", "Applet", "Attr", "Canvas", "CanvasGradient", "CanvasPattern", "CanvasRenderingContext2D", "CDATASection", "CharacterData", "Comment", "CSS2Properties", "CSSRule", "CSSStyleSheet", "Document", "DocumentFragment", "DocumentType", "DOMException", "DOMImplementation", "DOMParser", "Element", "Event", "ExternalInterface", "FlashPlayer", "Form", "Frame", "History", "HTMLCollection", "HTMLDocument", "HTMLElement", "IFrame", "Image", "Input", "JSObject", "KeyEvent", "Link", "Location", "MimeType", "MouseEvent", "Navigator", "Node", "NodeList", "Option", "Plugin", "ProcessingInstruction", "Range", "RangeException", "Screen", "Select", "Table", "TableCell", "TableRow", "TableSelection", "Text", "TextArea", "UIEvent", "Window", "XMLHttpRequest", "XMLSerializer", "XPathException", "XPathResult", "XSLTProcessor", "java", "Packages", "netscape", "sun", "JavaObject", "JavaClass", "JavaArray", "JavaMember", "\$wnd", "\$doc", "\$entry", "\$moduleName", "\$moduleBase", "\$gwt_version", "\$sessionId", "\$stack", "\$stackDepth", "\$location", "call"])/*const <String>[ |
| // Section references are from Ecma-262 |
| // (http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf) |
| @@ -24895,7 +24994,7 @@ |
| // TODO: prove why this is necessary or remove it |
| "call" |
| ]*/; |
| -var const$299 = ImmutableList.ImmutableList$from$factory(["break", "delete", "function", "return", "typeof", "case", "do", "if", "switch", "var", "catch", "else", "in", "this", "void", "continue", "false", "instanceof", "throw", "while", "debugger", "finally", "new", "true", "with", "default", "for", "null", "try", "abstract", "double", "goto", "native", "static", "boolean", "enum", "implements", "package", "super", "byte", "export", "import", "private", "synchronized", "char", "extends", "int", "protected", "throws", "class", "final", "interface", "public", "transient", "const", "float", "long", "short", "volatile"])/*const <String>[ |
| +var const$305 = ImmutableList.ImmutableList$from$factory(["break", "delete", "function", "return", "typeof", "case", "do", "if", "switch", "var", "catch", "else", "in", "this", "void", "continue", "false", "instanceof", "throw", "while", "debugger", "finally", "new", "true", "with", "default", "for", "null", "try", "abstract", "double", "goto", "native", "static", "boolean", "enum", "implements", "package", "super", "byte", "export", "import", "private", "synchronized", "char", "extends", "int", "protected", "throws", "class", "final", "interface", "public", "transient", "const", "float", "long", "short", "volatile"])/*const <String>[ |
| // These are current keywords |
| "break", "delete", "function", "return", "typeof", "case", "do", "if", |
| "switch", "var", "catch", "else", "in", "this", "void", "continue", |
| @@ -24909,8 +25008,8 @@ |
| "class", "final", "interface", "public", "transient", "const", "float", |
| "long", "short", "volatile" |
| ]*/; |
| -var const$301 = new StringWrapper('guard\$num')/*const SourceString('guard\$num')*/; |
| -var const$302 = new StringWrapper('guard\$string')/*const SourceString('guard\$string')*/; |
| +var const$307 = new StringWrapper('guard\$num')/*const SourceString('guard\$num')*/; |
| +var const$308 = new StringWrapper('guard\$string')/*const SourceString('guard\$string')*/; |
| var const$31 = new Keyword("break", false)/*const Keyword("break")*/; |
| var const$33 = new Keyword("case", false)/*const Keyword("case")*/; |
| var const$35 = new Keyword("catch", false)/*const Keyword("catch")*/; |