| Index: frog/frogsh
|
| diff --git a/frog/frogsh b/frog/frogsh
|
| index 427761a8a8a618798f7e08f1286f1cd035e179c6..f6336669f3e53af6d2faa8a66248a76ef02898e9 100755
|
| --- a/frog/frogsh
|
| +++ b/frog/frogsh
|
| @@ -2201,7 +2201,7 @@ StringBufferImpl.prototype.clear = function() {
|
| }
|
| StringBufferImpl.prototype.toString = function() {
|
| if (this._buffer.length == 0) return "";
|
| - if ($notnull_bool($eq(this._buffer.length, 1))) return $assert_String(this._buffer.$index(0));
|
| + if (this._buffer.length == 1) return $assert_String(this._buffer.$index(0));
|
| var result = StringBase.concatAll(this._buffer);
|
| this._buffer.clear();
|
| this._buffer.add(result);
|
| @@ -2231,10 +2231,10 @@ StringBase.createFromCharCodes = function(charCodes) {
|
| return String.fromCharCode.apply(null, charCodes);
|
| }
|
| StringBase.join = function(strings, separator) {
|
| - if ($notnull_bool($eq(strings.length, 0))) return '';
|
| + if (strings.length == 0) return '';
|
| var s = $assert_String(strings.$index(0));
|
| for (var i = 1;
|
| - i < $assert_num(strings.length); i++) {
|
| + i < strings.length; i++) {
|
| s = s + separator + strings.$index(i);
|
| }
|
| return s;
|
| @@ -2615,10 +2615,30 @@ AbstractLink$T.prototype.is$Link$Node = function(){return this;};
|
| AbstractLink$T.prototype.is$Link$Token = function(){return this;};
|
| AbstractLink$T.prototype.is$Link$Type = function(){return this;};
|
| AbstractLink$T.prototype.is$Iterable = function(){return this;};
|
| +AbstractLink$T.prototype.prepend = function(element) {
|
| + return new LinkEntry$T(element, this);
|
| +}
|
| AbstractLink$T.prototype.iterator = function() {
|
| var $0;
|
| return (($0 = this.toList().iterator$0()) && $0.is$Iterator$T());
|
| }
|
| +AbstractLink$T.prototype.printOn = function(buffer, separatedBy) {
|
| + if ($notnull_bool(this.isEmpty())) return;
|
| + buffer.add(this.get$head() == null ? 'null' : this.get$head());
|
| + if (separatedBy == null) separatedBy = '';
|
| + for (var link = this.get$tail();
|
| + !$notnull_bool(link.isEmpty()); link = link.get$tail()) {
|
| + buffer.add(separatedBy);
|
| + buffer.add(link.get$head() == null ? 'null' : link.get$head());
|
| + }
|
| +}
|
| +AbstractLink$T.prototype.toString = function() {
|
| + var buffer = new StringBufferImpl("");
|
| + buffer.add('[ ');
|
| + this.printOn(buffer, ', ');
|
| + buffer.add(' ]');
|
| + return buffer.toString();
|
| +}
|
| // ********** Code for LinkTail **************
|
| function LinkTail() {
|
| // Initializers done
|
| @@ -19954,6 +19974,7 @@ DeclaredIdentifier.prototype.visit$1 = function($0) {
|
| function lang_Type(name) {
|
| this.name = name;
|
| this.isTested = false;
|
| + this._resolvedMembers = $map([]);
|
| // Initializers done
|
| }
|
| lang_Type.prototype.is$lang_Type = function(){return this;};
|
| @@ -19978,6 +19999,9 @@ lang_Type.prototype.get$typeMember = function() {
|
| lang_Type.prototype.getMember = function(name) {
|
| return null;
|
| }
|
| +lang_Type.prototype.get$subtypes = function() {
|
| + return null;
|
| +}
|
| lang_Type.prototype.get$isVar = function() {
|
| return false;
|
| }
|
| @@ -20124,6 +20148,37 @@ lang_Type.prototype._getMemberInParents = function(memberName) {
|
| }
|
| }
|
| }
|
| +lang_Type.prototype.resolveMember = function(memberName) {
|
| + var $0;
|
| + var ret = (($0 = this._resolvedMembers.$index(memberName)) && $0.is$MemberSet());
|
| + if (ret != null) return ret;
|
| + var member = this.getMember(memberName);
|
| + if (member == null) {
|
| + return null;
|
| + }
|
| + ret = new MemberSet(member, false);
|
| + this._resolvedMembers.$setindex(memberName, ret);
|
| + if ($notnull_bool(member.get$isStatic())) {
|
| + return ret;
|
| + }
|
| + else {
|
| + var $list = this.get$subtypes();
|
| + for (var $i = this.get$subtypes().iterator(); $i.hasNext$0(); ) {
|
| + var t = $i.next$0();
|
| + if (!$notnull_bool(this.get$isClass()) && $notnull_bool(t.get$isClass())) {
|
| + var m = t.getMember$1(memberName);
|
| + if ($notnull_bool($ne(m, null)) && ret.members.indexOf(m) == -1) {
|
| + ret.add((m && m.is$Member()));
|
| + }
|
| + }
|
| + else {
|
| + var m = t.get$members().$index(memberName);
|
| + if ($notnull_bool($ne(m, null))) ret.add((m && m.is$Member()));
|
| + }
|
| + }
|
| + return ret;
|
| + }
|
| +}
|
| lang_Type.prototype.ensureSubtypeOf = function(other, span, typeErrors) {
|
| if (!$notnull_bool(this.isSubtypeOf(other))) {
|
| var msg = ('type ' + this.name + ' is not a subtype of ' + other.name);
|
| @@ -20543,6 +20598,17 @@ ConcreteType.prototype.get$interfaces = function() {
|
| }
|
| return this._interfaces;
|
| }
|
| +ConcreteType.prototype.get$subtypes = function() {
|
| + if (this._subtypes == null) {
|
| + this._subtypes = new HashSetImplementation();
|
| + var $list = this.genericType.get$subtypes();
|
| + for (var $i = this.genericType.get$subtypes().iterator(); $i.hasNext$0(); ) {
|
| + var s = $i.next$0();
|
| + this._subtypes.add(s.resolveTypeParams$1(this));
|
| + }
|
| + }
|
| + return this._subtypes;
|
| +}
|
| ConcreteType.prototype.getCallMethod = function() {
|
| return this.genericType.getCallMethod();
|
| }
|
| @@ -20606,19 +20672,6 @@ ConcreteType.prototype.getMember = function(memberName) {
|
| }
|
| return this._getMemberInParents(memberName);
|
| }
|
| -ConcreteType.prototype.resolveMember = function(memberName) {
|
| - var mem = this.getMember(memberName);
|
| - if ($notnull_bool(mem == null)) return null;
|
| - var ret = new MemberSet((mem && mem.is$Member()), false);
|
| - if ($notnull_bool(mem.get$isStatic())) return (ret && ret.is$MemberSet());
|
| - var $list = this.genericType.get$subtypes();
|
| - for (var $i = this.genericType.get$subtypes().iterator(); $i.hasNext$0(); ) {
|
| - var t = $i.next$0();
|
| - var m = t.get$members().$index(memberName);
|
| - if ($notnull_bool($ne(m, null))) ret.add$1(m);
|
| - }
|
| - return (ret && ret.is$MemberSet());
|
| -}
|
| ConcreteType.prototype.resolveType = function(node, isRequired) {
|
| var ret = this.genericType.resolveType(node, isRequired);
|
| return (ret && ret.is$lang_Type());
|
| @@ -20644,9 +20697,6 @@ ConcreteType.prototype.getOrMakeConcreteType$1 = function($0) {
|
| ConcreteType.prototype.markUsed$0 = function() {
|
| return this.markUsed();
|
| };
|
| -ConcreteType.prototype.resolveMember$1 = function($0) {
|
| - return this.resolveMember($assert_String($0));
|
| -};
|
| ConcreteType.prototype.resolveTypeParams$1 = function($0) {
|
| return this.resolveTypeParams(($0 && $0.is$ConcreteType()));
|
| };
|
| @@ -20660,7 +20710,6 @@ function DefinedType(name, library, definition, isClass) {
|
| this.constructors = $map([]);
|
| this.members = $map([]);
|
| this.factories = new FactoryMap();
|
| - this._resolvedMembers = $map([]);
|
| // Initializers done
|
| lang_Type.call(this, name);
|
| this.setDefinition(definition);
|
| @@ -20692,7 +20741,7 @@ DefinedType.prototype.set$isUsed = function(value) { return this.isUsed = value;
|
| DefinedType.prototype.get$isNativeType = function() { return this.isNativeType; };
|
| DefinedType.prototype.set$isNativeType = function(value) { return this.isNativeType = value; };
|
| DefinedType.prototype.setDefinition = function(def) {
|
| - $assert(this.definition == null, "definition == null", "type.dart", 703, 12);
|
| + $assert(this.definition == null, "definition == null", "type.dart", 733, 12);
|
| this.definition = def;
|
| if ((this.definition instanceof TypeDefinition) && this.definition.get$nativeType() != null) {
|
| this.isNativeType = true;
|
| @@ -20802,7 +20851,7 @@ DefinedType.prototype._resolveInterfaces = function(types) {
|
| return (interfaces && interfaces.is$List$Type());
|
| }
|
| DefinedType.prototype.addDirectSubtype = function(type) {
|
| - $assert(this._subtypes == null, "_subtypes == null", "type.dart", 819, 12);
|
| + $assert(this._subtypes == null, "_subtypes == null", "type.dart", 849, 12);
|
| this.directSubtypes.add(type);
|
| }
|
| DefinedType.prototype.get$subtypes = function() {
|
| @@ -21064,37 +21113,6 @@ DefinedType.prototype.getMember = function(memberName) {
|
| }
|
| return this._getMemberInParents(memberName);
|
| }
|
| -DefinedType.prototype.resolveMember = function(memberName) {
|
| - var $0;
|
| - var ret = (($0 = this._resolvedMembers.$index(memberName)) && $0.is$MemberSet());
|
| - if (ret != null) return ret;
|
| - var member = this.getMember(memberName);
|
| - if (member == null) {
|
| - return null;
|
| - }
|
| - ret = new MemberSet(member, false);
|
| - this._resolvedMembers.$setindex(memberName, ret);
|
| - if ($notnull_bool(member.get$isStatic())) {
|
| - return ret;
|
| - }
|
| - else {
|
| - var $list = this.get$subtypes();
|
| - for (var $i = this.get$subtypes().iterator(); $i.hasNext$0(); ) {
|
| - var t = $i.next$0();
|
| - if (!$notnull_bool(this.isClass) && $notnull_bool(t.get$isClass())) {
|
| - var m = t.getMember$1(memberName);
|
| - if ($notnull_bool($ne(m, null)) && ret.members.indexOf(m) == -1) {
|
| - ret.add((m && m.is$Member()));
|
| - }
|
| - }
|
| - else {
|
| - var m = t.get$members().$index(memberName);
|
| - if ($notnull_bool($ne(m, null))) ret.add((m && m.is$Member()));
|
| - }
|
| - }
|
| - return ret;
|
| - }
|
| -}
|
| DefinedType._getDottedName = function(type) {
|
| if (type.names != null) {
|
| var names = map(type.names, (function (n) {
|
| @@ -21182,7 +21200,7 @@ DefinedType.prototype.resolveTypeParams = function(inType) {
|
| return this;
|
| }
|
| DefinedType.prototype.getOrMakeConcreteType = function(typeArgs) {
|
| - $assert(this.get$isGeneric(), "isGeneric", "type.dart", 1251, 12);
|
| + $assert(this.get$isGeneric(), "isGeneric", "type.dart", 1246, 12);
|
| var names = [this.name];
|
| var typeMap = $map([]);
|
| for (var i = 0;
|
| @@ -21200,7 +21218,7 @@ DefinedType.prototype.getOrMakeConcreteType = function(typeArgs) {
|
| return (ret && ret.is$lang_Type());
|
| }
|
| DefinedType.prototype.getCallStub = function(args) {
|
| - $assert(this.get$isFunction(), "isFunction", "type.dart", 1271, 12);
|
| + $assert(this.get$isFunction(), "isFunction", "type.dart", 1266, 12);
|
| var name = _getCallStubName('call', args);
|
| if (this.varStubs == null) this.varStubs = $map([]);
|
| var stub = this.varStubs.$index(name);
|
| @@ -21234,9 +21252,6 @@ DefinedType.prototype.markUsed$0 = function() {
|
| DefinedType.prototype.resolve$0 = function() {
|
| return this.resolve();
|
| };
|
| -DefinedType.prototype.resolveMember$1 = function($0) {
|
| - return this.resolveMember($assert_String($0));
|
| -};
|
| DefinedType.prototype.resolveTypeParams$1 = function($0) {
|
| return this.resolveTypeParams(($0 && $0.is$ConcreteType()));
|
| };
|
|
|