| Index: frog/frogsh
|
| diff --git a/frog/frogsh b/frog/frogsh
|
| index c9a2a285fde84ce37f8cdaa30fe403535ee008ce..947fb8aa74d895197594e3bf6be46a5c93865d29 100755
|
| --- a/frog/frogsh
|
| +++ b/frog/frogsh
|
| @@ -814,7 +814,7 @@ HashMapImplementation._isPowerOfTwo = function(x) {
|
| return ((x & (x - 1)) == 0);
|
| }
|
| HashMapImplementation.prototype._grow = function(newCapacity) {
|
| - $assert(HashMapImplementation._isPowerOfTwo(newCapacity), "_isPowerOfTwo(newCapacity)", "/usr/local/google/home/ngeoffray/dart-all2/bleeding_edge/dart/corelib/src/implementation/hash_map_set.dart", 153, 12);
|
| + $assert(HashMapImplementation._isPowerOfTwo(newCapacity), "_isPowerOfTwo(newCapacity)", "/home/kasperl/Dart/dart/corelib/src/implementation/hash_map_set.dart", 153, 12);
|
| var capacity = this._keys.length;
|
| this._loadLimit = HashMapImplementation._computeLoadLimit(newCapacity);
|
| var oldKeys = this._keys;
|
| @@ -971,7 +971,7 @@ HashMapImplementation$E$E._isPowerOfTwo = function(x) {
|
| return ((x & (x - 1)) == 0);
|
| }
|
| HashMapImplementation$E$E.prototype._grow = function(newCapacity) {
|
| - $assert(HashMapImplementation._isPowerOfTwo(newCapacity), "_isPowerOfTwo(newCapacity)", "/usr/local/google/home/ngeoffray/dart-all2/bleeding_edge/dart/corelib/src/implementation/hash_map_set.dart", 153, 12);
|
| + $assert(HashMapImplementation._isPowerOfTwo(newCapacity), "_isPowerOfTwo(newCapacity)", "/home/kasperl/Dart/dart/corelib/src/implementation/hash_map_set.dart", 153, 12);
|
| var capacity = this._keys.length;
|
| this._loadLimit = HashMapImplementation._computeLoadLimit(newCapacity);
|
| var oldKeys = this._keys;
|
| @@ -1336,7 +1336,7 @@ LinkedHashMapImplementation.prototype.getKeys = function() {
|
| list.$setindex(index++, entry.key);
|
| }
|
| );
|
| - $assert(index == this.get$length(), "index == length", "/usr/local/google/home/ngeoffray/dart-all2/bleeding_edge/dart/corelib/src/implementation/linked_hash_map.dart", 75, 12);
|
| + $assert(index == this.get$length(), "index == length", "/home/kasperl/Dart/dart/corelib/src/implementation/linked_hash_map.dart", 75, 12);
|
| return list;
|
| }
|
| LinkedHashMapImplementation.prototype.getValues = function() {
|
| @@ -1346,7 +1346,7 @@ LinkedHashMapImplementation.prototype.getValues = function() {
|
| list.$setindex(index++, entry.value);
|
| }
|
| );
|
| - $assert(index == this.get$length(), "index == length", "/usr/local/google/home/ngeoffray/dart-all2/bleeding_edge/dart/corelib/src/implementation/linked_hash_map.dart", 86, 12);
|
| + $assert(index == this.get$length(), "index == length", "/home/kasperl/Dart/dart/corelib/src/implementation/linked_hash_map.dart", 86, 12);
|
| return list;
|
| }
|
| LinkedHashMapImplementation.prototype.forEach = function(f) {
|
| @@ -2960,7 +2960,7 @@ AbstractLink.prototype.iterator = function() {
|
| AbstractLink.prototype.printOn = function(buffer, separatedBy) {
|
| var $0;
|
| if ($notnull_bool(this.isEmpty())) return;
|
| - buffer.add($notnull_bool(this.get$head() == null) ? 'null' : this.get$head());
|
| + buffer.add(this.get$head());
|
| for (var link = this.get$tail();
|
| $notnull_bool(!$notnull_bool(link.isEmpty())); link = (($0 = link.get$tail()) && $0.is$Link())) {
|
| buffer.add(separatedBy);
|
| @@ -8028,14 +8028,6 @@ ResolverTask.prototype.resolve = function(tree) {
|
| })
|
| );
|
| }
|
| -// ********** Code for ErrorMessages **************
|
| -function ErrorMessages() {}
|
| -ErrorMessages.canNotResolve = function(id) {
|
| - return ("cannot resolve " + id + "");
|
| -}
|
| -ErrorMessages.duplicateDefinition = function(id) {
|
| - return ("duplicate definition of " + id + "");
|
| -}
|
| // ********** Code for ResolverVisitor **************
|
| function ResolverVisitor(compiler0) {
|
| this.compiler = compiler0;
|
| @@ -8043,12 +8035,16 @@ function ResolverVisitor(compiler0) {
|
| this.context = new Scope(new TopScope(compiler0.universe));
|
| // Initializers done
|
| }
|
| -ResolverVisitor.prototype.fail = function(node, message) {
|
| - this.compiler.cancel(message);
|
| +ResolverVisitor.prototype.fail = function(node) {
|
| + this.compiler.cancel(('cannot resolve ' + node + ''));
|
| }
|
| ResolverVisitor.prototype.visit = function(node) {
|
| if ($notnull_bool(node == null)) return null;
|
| - return node.accept(this);
|
| + var element = node.accept(this);
|
| + if ($notnull_bool(element != null)) {
|
| + this.mapping.$setindex(node, element);
|
| + }
|
| + return element;
|
| }
|
| ResolverVisitor.prototype.visitIn = function(node, scope) {
|
| this.context = scope;
|
| @@ -8063,15 +8059,14 @@ ResolverVisitor.prototype.visitExpressionStatement = function(node) {
|
| this.visit(node.expression);
|
| }
|
| ResolverVisitor.prototype.visitFunctionExpression = function(node) {
|
| - if ($notnull_bool(!$notnull_bool(node.parameters.nodes.isEmpty()))) this.fail(node, "Unimplemented in the resolver");
|
| + if ($notnull_bool(!$notnull_bool(node.parameters.nodes.isEmpty()))) this.fail(node);
|
| var enclosingElement = this.visit(node.name);
|
| this.visitIn(node.body, new Scope.enclosing$ctor(this.context, enclosingElement));
|
| return enclosingElement;
|
| }
|
| ResolverVisitor.prototype.visitIdentifier = function(node) {
|
| var element = this.context.lookup(node.get$source());
|
| - if ($notnull_bool(element == null)) this.fail(node, ErrorMessages.canNotResolve(node));
|
| - this.useElement(node, element);
|
| + if ($notnull_bool(element == null)) this.fail(node);
|
| return element;
|
| }
|
| ResolverVisitor.prototype.visitIf = function(node) {
|
| @@ -8080,13 +8075,17 @@ ResolverVisitor.prototype.visitIf = function(node) {
|
| this.visit(node.elsePart);
|
| }
|
| ResolverVisitor.prototype.visitSend = function(node) {
|
| + var $0;
|
| var target = null;
|
| this.visit(node.receiver);
|
| var name = node.selector.get$source();
|
| if ($notnull_bool($eq(name, const$231/*const SourceString('print')*/) || $eq(name, const$232/*const SourceString('+')*/) || $eq(name, const$233/*const SourceString('-')*/) || $eq(name, const$234/*const SourceString('*')*/) || $eq(name, const$235/*const SourceString('/')*/) || $eq(name, const$236/*const SourceString('~/')*/))) {
|
| }
|
| else {
|
| - this.visit(node.selector);
|
| + target = (($0 = this.visit(node.selector)) && $0.is$Element());
|
| + if ($notnull_bool(target == null)) {
|
| + this.fail(node);
|
| + }
|
| }
|
| this.visit(node.argumentsNode);
|
| return target;
|
| @@ -8114,7 +8113,7 @@ ResolverVisitor.prototype.visitNodeList = function(node) {
|
| }
|
| }
|
| ResolverVisitor.prototype.visitOperator = function(node) {
|
| - this.fail(node, "Unimplemented in the resolver");
|
| + this.fail(node);
|
| }
|
| ResolverVisitor.prototype.visitReturn = function(node) {
|
| this.visit(node.expression);
|
| @@ -8127,12 +8126,9 @@ ResolverVisitor.prototype.visitVariableDefinitions = function(node) {
|
| var visitor = new VariableDefinitionsVisitor(node, this);
|
| visitor.visit(node.definitions);
|
| }
|
| -ResolverVisitor.prototype.defineElement = function(node, element) {
|
| - this.mapping.$setindex(node, element);
|
| - return this.context.add(element);
|
| -}
|
| -ResolverVisitor.prototype.useElement = function(node, element) {
|
| +ResolverVisitor.prototype.setElement = function(node, element) {
|
| this.mapping.$setindex(node, element);
|
| + this.context.add(element);
|
| }
|
| // ********** Code for VariableDefinitionsVisitor **************
|
| function VariableDefinitionsVisitor(definitions, resolver) {
|
| @@ -8142,19 +8138,16 @@ function VariableDefinitionsVisitor(definitions, resolver) {
|
| }
|
| VariableDefinitionsVisitor.prototype.visitSend = function(node) {
|
| var $0;
|
| - $assert(node.get$arguments().get$tail().isEmpty(), "node.arguments.tail.isEmpty()", "leg/resolver.dart", 158, 12);
|
| + $assert(node.get$arguments().get$tail().isEmpty(), "node.arguments.tail.isEmpty()", "leg/resolver.dart", 153, 12);
|
| var selector = node.selector;
|
| var name = selector.get$source();
|
| - $assert($eq(name, const$237/*const SourceString('=')*/), "name == const SourceString('=')", "leg/resolver.dart", 161, 12);
|
| + $assert($eq(name, const$237/*const SourceString('=')*/), "name == const SourceString('=')", "leg/resolver.dart", 156, 12);
|
| this.resolver.visit((($0 = node.get$arguments().get$head()) && $0.is$Node()));
|
| this.visit(node.receiver);
|
| }
|
| VariableDefinitionsVisitor.prototype.visitIdentifier = function(node) {
|
| var variableElement = new Element(node.get$source(), this.resolver.context.enclosingElement);
|
| - var existing = this.resolver.defineElement(node, variableElement);
|
| - if ($notnull_bool($ne(existing, variableElement))) {
|
| - this.resolver.fail(node, ErrorMessages.duplicateDefinition(node));
|
| - }
|
| + this.resolver.setElement(node, variableElement);
|
| }
|
| VariableDefinitionsVisitor.prototype.visitNodeList = function(node) {
|
| var $0;
|
| @@ -8192,9 +8185,7 @@ Scope.prototype.lookup = function(name) {
|
| return this.parent.lookup(name);
|
| }
|
| Scope.prototype.add = function(element) {
|
| - if ($notnull_bool(this.elements.containsKey(element.name))) return this.elements.$index(element.name);
|
| this.elements.$setindex(element.name, element);
|
| - return element;
|
| }
|
| // ********** Code for TopScope **************
|
| function TopScope(universe) {
|
|
|