Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Side by Side Diff: frog/minfrog

Issue 8952006: Fix factories in Frog to correspond to the new syntax. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env node 1 #!/usr/bin/env node
2 // ********** Library dart:core ************** 2 // ********** Library dart:core **************
3 // ********** Natives dart:core ************** 3 // ********** Natives dart:core **************
4 /** 4 /**
5 * Generates a dynamic call stub for a function. 5 * Generates a dynamic call stub for a function.
6 * Our goal is to create a stub method like this on-the-fly: 6 * Our goal is to create a stub method like this on-the-fly:
7 * function($0, $1, capture) { return this($0, $1, true, capture); } 7 * function($0, $1, capture) { return this($0, $1, true, capture); }
8 * 8 *
9 * This stub then replaces the dynamic one on Function, with one that is 9 * This stub then replaces the dynamic one on Function, with one that is
10 * specialized for that particular function, taking into account its default 10 * specialized for that particular function, taking into account its default
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 return this.noSuchMethod("writeDefinition", [$0, $1]); 390 return this.noSuchMethod("writeDefinition", [$0, $1]);
391 }; 391 };
392 // ********** Code for Clock ************** 392 // ********** Code for Clock **************
393 function Clock() {} 393 function Clock() {}
394 Clock.now = function() { 394 Clock.now = function() {
395 return new Date().getTime(); 395 return new Date().getTime();
396 } 396 }
397 Clock.frequency = function() { 397 Clock.frequency = function() {
398 return 1000; 398 return 1000;
399 } 399 }
400 // ********** Code for IllegalAccessException **************
401 function IllegalAccessException() {
402 // Initializers done
403 }
404 IllegalAccessException.prototype.toString = function() {
405 return "Attempt to modify an immutable object";
406 }
407 IllegalAccessException.prototype.toString$0 = IllegalAccessException.prototype.t oString;
400 // ********** Code for NoSuchMethodException ************** 408 // ********** Code for NoSuchMethodException **************
401 function NoSuchMethodException(_receiver, _functionName, _arguments) { 409 function NoSuchMethodException(_receiver, _functionName, _arguments) {
402 this._receiver = _receiver; 410 this._receiver = _receiver;
403 this._functionName = _functionName; 411 this._functionName = _functionName;
404 this._arguments = _arguments; 412 this._arguments = _arguments;
405 // Initializers done 413 // Initializers done
406 } 414 }
407 NoSuchMethodException.prototype.toString = function() { 415 NoSuchMethodException.prototype.toString = function() {
408 var sb = new StringBufferImpl(""); 416 var sb = new StringBufferImpl("");
409 for (var i = 0; 417 for (var i = 0;
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 return this._array.length > this._dart_coreimpl_pos; 675 return this._array.length > this._dart_coreimpl_pos;
668 } 676 }
669 ListIterator.prototype.next = function() { 677 ListIterator.prototype.next = function() {
670 if (!this.hasNext()) { 678 if (!this.hasNext()) {
671 $throw(const$8/*const NoMoreElementsException()*/); 679 $throw(const$8/*const NoMoreElementsException()*/);
672 } 680 }
673 return this._array.$index(this._dart_coreimpl_pos++); 681 return this._array.$index(this._dart_coreimpl_pos++);
674 } 682 }
675 ListIterator.prototype.hasNext$0 = ListIterator.prototype.hasNext; 683 ListIterator.prototype.hasNext$0 = ListIterator.prototype.hasNext;
676 ListIterator.prototype.next$0 = ListIterator.prototype.next; 684 ListIterator.prototype.next$0 = ListIterator.prototype.next;
685 // ********** Code for ImmutableList **************
686 /** Implements extends for Dart classes on JavaScript prototypes. */
687 function $inherits(child, parent) {
688 if (child.prototype.__proto__) {
689 child.prototype.__proto__ = parent.prototype;
690 } else {
691 function tmp() {};
692 tmp.prototype = parent.prototype;
693 child.prototype = new tmp();
694 child.prototype.constructor = child;
695 }
696 }
697 $inherits(ImmutableList, ListFactory_E);
698 function ImmutableList(length) {
699 this._length = length;
700 // Initializers done
701 ListFactory_E.call(this, length);
702 }
703 ImmutableList.ImmutableList$from$factory = function(other) {
704 var list = new ImmutableList(other.length);
705 for (var i = 0;
706 i < other.length; i++) {
707 list._setindex(i, other.$index(i));
708 }
709 return list;
710 }
711 ImmutableList.prototype.get$length = function() {
712 return this._length;
713 }
714 ImmutableList.prototype.set$length = function(length) {
715 $throw(const$127/*const IllegalAccessException()*/);
716 }
717 Object.defineProperty(ImmutableList.prototype, "length", {
718 get: ImmutableList.prototype.get$length,
719 set: ImmutableList.prototype.set$length
720 });
721 ImmutableList.prototype._setindex = function(index, value) {
722 return this[index] = value;
723 }
724 ImmutableList.prototype.$setindex = function(index, value) {
725 $throw(const$127/*const IllegalAccessException()*/);
726 }
727 ImmutableList.prototype.sort = function(compare) {
728 $throw(const$127/*const IllegalAccessException()*/);
729 }
730 ImmutableList.prototype.add = function(element) {
731 $throw(const$127/*const IllegalAccessException()*/);
732 }
733 ImmutableList.prototype.addLast = function(element) {
734 $throw(const$127/*const IllegalAccessException()*/);
735 }
736 ImmutableList.prototype.addAll = function(elements) {
737 $throw(const$127/*const IllegalAccessException()*/);
738 }
739 ImmutableList.prototype.clear = function() {
740 $throw(const$127/*const IllegalAccessException()*/);
741 }
742 ImmutableList.prototype.removeLast = function() {
743 $throw(const$127/*const IllegalAccessException()*/);
744 }
745 ImmutableList.prototype.toString = function() {
746 return ListFactory.ListFactory$from$factory(this).toString();
747 }
748 ImmutableList.prototype.add$1 = ImmutableList.prototype.add;
749 ImmutableList.prototype.addAll$1 = ImmutableList.prototype.addAll;
750 ImmutableList.prototype.removeLast$0 = ImmutableList.prototype.removeLast;
751 ImmutableList.prototype.sort$1 = function($0) {
752 return this.sort(to$call$2($0));
753 };
754 ImmutableList.prototype.toString$0 = ImmutableList.prototype.toString;
677 // ********** Code for NumImplementation ************** 755 // ********** Code for NumImplementation **************
678 NumImplementation = Number; 756 NumImplementation = Number;
679 NumImplementation.prototype.isNaN = function() { 757 NumImplementation.prototype.isNaN = function() {
680 return isNaN(this); 758 return isNaN(this);
681 } 759 }
682 NumImplementation.prototype.isNegative = function() { 760 NumImplementation.prototype.isNegative = function() {
683 return this == 0 ? (1 / this) < 0 : this < 0; 761 return this == 0 ? (1 / this) < 0 : this < 0;
684 } 762 }
685 NumImplementation.prototype.hashCode = function() { 763 NumImplementation.prototype.hashCode = function() {
686 return this & 0xFFFFFFF; 764 return this & 0xFFFFFFF;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 // ********** Code for HashMapImplementation ************** 809 // ********** Code for HashMapImplementation **************
732 function HashMapImplementation() { 810 function HashMapImplementation() {
733 // Initializers done 811 // Initializers done
734 this._numberOfEntries = 0; 812 this._numberOfEntries = 0;
735 this._numberOfDeleted = 0; 813 this._numberOfDeleted = 0;
736 this._loadLimit = HashMapImplementation._computeLoadLimit(8/*HashMapImplementa tion._INITIAL_CAPACITY*/); 814 this._loadLimit = HashMapImplementation._computeLoadLimit(8/*HashMapImplementa tion._INITIAL_CAPACITY*/);
737 this._keys = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/); 815 this._keys = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/);
738 this._values = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/); 816 this._values = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/);
739 } 817 }
740 HashMapImplementation.HashMapImplementation$from$factory = function(other) { 818 HashMapImplementation.HashMapImplementation$from$factory = function(other) {
741 var result = new HashMapImplementation(); 819 var result = new HashMapImplementation_K$V();
742 other.forEach((function (key, value) { 820 other.forEach((function (key, value) {
743 result.$setindex(key, value); 821 result.$setindex(key, value);
744 }) 822 })
745 ); 823 );
746 return result; 824 return result;
747 } 825 }
748 HashMapImplementation._computeLoadLimit = function(capacity) { 826 HashMapImplementation._computeLoadLimit = function(capacity) {
749 return $truncdiv((capacity * 3), 4); 827 return $truncdiv((capacity * 3), 4);
750 } 828 }
751 HashMapImplementation._firstProbe = function(hashCode, length) { 829 HashMapImplementation._firstProbe = function(hashCode, length) {
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 return (this._probeForLookup(key) != -1); 965 return (this._probeForLookup(key) != -1);
888 } 966 }
889 HashMapImplementation.prototype.containsKey$1 = HashMapImplementation.prototype. containsKey; 967 HashMapImplementation.prototype.containsKey$1 = HashMapImplementation.prototype. containsKey;
890 HashMapImplementation.prototype.forEach$1 = function($0) { 968 HashMapImplementation.prototype.forEach$1 = function($0) {
891 return this.forEach(to$call$2($0)); 969 return this.forEach(to$call$2($0));
892 }; 970 };
893 HashMapImplementation.prototype.getKeys$0 = HashMapImplementation.prototype.getK eys; 971 HashMapImplementation.prototype.getKeys$0 = HashMapImplementation.prototype.getK eys;
894 HashMapImplementation.prototype.getValues$0 = HashMapImplementation.prototype.ge tValues; 972 HashMapImplementation.prototype.getValues$0 = HashMapImplementation.prototype.ge tValues;
895 HashMapImplementation.prototype.isEmpty$0 = HashMapImplementation.prototype.isEm pty; 973 HashMapImplementation.prototype.isEmpty$0 = HashMapImplementation.prototype.isEm pty;
896 // ********** Code for HashMapImplementation_E$E ************** 974 // ********** Code for HashMapImplementation_E$E **************
897 /** Implements extends for Dart classes on JavaScript prototypes. */
898 function $inherits(child, parent) {
899 if (child.prototype.__proto__) {
900 child.prototype.__proto__ = parent.prototype;
901 } else {
902 function tmp() {};
903 tmp.prototype = parent.prototype;
904 child.prototype = new tmp();
905 child.prototype.constructor = child;
906 }
907 }
908 $inherits(HashMapImplementation_E$E, HashMapImplementation); 975 $inherits(HashMapImplementation_E$E, HashMapImplementation);
909 function HashMapImplementation_E$E() { 976 function HashMapImplementation_E$E() {
910 // Initializers done 977 // Initializers done
911 this._numberOfEntries = 0; 978 this._numberOfEntries = 0;
912 this._numberOfDeleted = 0; 979 this._numberOfDeleted = 0;
913 this._loadLimit = HashMapImplementation._computeLoadLimit(8/*HashMapImplementa tion._INITIAL_CAPACITY*/); 980 this._loadLimit = HashMapImplementation._computeLoadLimit(8/*HashMapImplementa tion._INITIAL_CAPACITY*/);
914 this._keys = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/); 981 this._keys = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/);
915 this._values = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/); 982 this._values = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/);
916 } 983 }
917 HashMapImplementation_E$E._computeLoadLimit = function(capacity) { 984 HashMapImplementation_E$E._computeLoadLimit = function(capacity) {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 } 1098 }
1032 ); 1099 );
1033 return list; 1100 return list;
1034 } 1101 }
1035 HashMapImplementation_E$E.prototype.containsKey = function(key) { 1102 HashMapImplementation_E$E.prototype.containsKey = function(key) {
1036 return (this._probeForLookup(key) != -1); 1103 return (this._probeForLookup(key) != -1);
1037 } 1104 }
1038 // ********** Code for HashMapImplementation_K$DoubleLinkedQueueEntry_KeyValuePa ir_K$V ************** 1105 // ********** Code for HashMapImplementation_K$DoubleLinkedQueueEntry_KeyValuePa ir_K$V **************
1039 $inherits(HashMapImplementation_K$DoubleLinkedQueueEntry_KeyValuePair_K$V, HashM apImplementation); 1106 $inherits(HashMapImplementation_K$DoubleLinkedQueueEntry_KeyValuePair_K$V, HashM apImplementation);
1040 function HashMapImplementation_K$DoubleLinkedQueueEntry_KeyValuePair_K$V() {} 1107 function HashMapImplementation_K$DoubleLinkedQueueEntry_KeyValuePair_K$V() {}
1108 // ********** Code for HashMapImplementation_K$V **************
1109 $inherits(HashMapImplementation_K$V, HashMapImplementation);
1110 function HashMapImplementation_K$V() {
1111 // Initializers done
1112 this._numberOfEntries = 0;
1113 this._numberOfDeleted = 0;
1114 this._loadLimit = HashMapImplementation._computeLoadLimit(8/*HashMapImplementa tion._INITIAL_CAPACITY*/);
1115 this._keys = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/);
1116 this._values = new ListFactory(8/*HashMapImplementation._INITIAL_CAPACITY*/);
1117 }
1118 HashMapImplementation_K$V._computeLoadLimit = function(capacity) {
1119 return $truncdiv((capacity * 3), 4);
1120 }
1041 // ********** Code for HashMapImplementation_String$EvaluatedValue ************* * 1121 // ********** Code for HashMapImplementation_String$EvaluatedValue ************* *
1042 $inherits(HashMapImplementation_String$EvaluatedValue, HashMapImplementation); 1122 $inherits(HashMapImplementation_String$EvaluatedValue, HashMapImplementation);
1043 function HashMapImplementation_String$EvaluatedValue() {} 1123 function HashMapImplementation_String$EvaluatedValue() {}
1044 // ********** Code for HashSetImplementation ************** 1124 // ********** Code for HashSetImplementation **************
1045 function HashSetImplementation() { 1125 function HashSetImplementation() {
1046 // Initializers done 1126 // Initializers done
1047 this._backingMap = new HashMapImplementation_E$E(); 1127 this._backingMap = new HashMapImplementation_E$E();
1048 } 1128 }
1049 HashSetImplementation.HashSetImplementation$from$factory = function(other) { 1129 HashSetImplementation.HashSetImplementation$from$factory = function(other) {
1050 var set = new HashSetImplementation(); 1130 var set = new HashSetImplementation_E();
1051 for (var $$i = other.iterator(); $$i.hasNext$0(); ) { 1131 for (var $$i = other.iterator(); $$i.hasNext$0(); ) {
1052 var e = $$i.next$0(); 1132 var e = $$i.next$0();
1053 set.add(e); 1133 set.add(e);
1054 } 1134 }
1055 return set; 1135 return set;
1056 } 1136 }
1057 HashSetImplementation.prototype.add = function(value) { 1137 HashSetImplementation.prototype.add = function(value) {
1058 this._backingMap.$setindex(value, value); 1138 this._backingMap.$setindex(value, value);
1059 } 1139 }
1060 HashSetImplementation.prototype.contains = function(value) { 1140 HashSetImplementation.prototype.contains = function(value) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1118 HashSetImplementation.prototype.forEach$1 = function($0) { 1198 HashSetImplementation.prototype.forEach$1 = function($0) {
1119 return this.forEach(to$call$1($0)); 1199 return this.forEach(to$call$1($0));
1120 }; 1200 };
1121 HashSetImplementation.prototype.isEmpty$0 = HashSetImplementation.prototype.isEm pty; 1201 HashSetImplementation.prototype.isEmpty$0 = HashSetImplementation.prototype.isEm pty;
1122 HashSetImplementation.prototype.iterator$0 = HashSetImplementation.prototype.ite rator; 1202 HashSetImplementation.prototype.iterator$0 = HashSetImplementation.prototype.ite rator;
1123 HashSetImplementation.prototype.some$1 = function($0) { 1203 HashSetImplementation.prototype.some$1 = function($0) {
1124 return this.some(to$call$1($0)); 1204 return this.some(to$call$1($0));
1125 }; 1205 };
1126 // ********** Code for HashSetImplementation_E ************** 1206 // ********** Code for HashSetImplementation_E **************
1127 $inherits(HashSetImplementation_E, HashSetImplementation); 1207 $inherits(HashSetImplementation_E, HashSetImplementation);
1128 function HashSetImplementation_E() {} 1208 function HashSetImplementation_E() {
1209 // Initializers done
1210 this._backingMap = new HashMapImplementation_E$E();
1211 }
1129 // ********** Code for HashSetImplementation_Library ************** 1212 // ********** Code for HashSetImplementation_Library **************
1130 $inherits(HashSetImplementation_Library, HashSetImplementation); 1213 $inherits(HashSetImplementation_Library, HashSetImplementation);
1131 function HashSetImplementation_Library() {} 1214 function HashSetImplementation_Library() {}
1132 // ********** Code for HashSetImplementation_String ************** 1215 // ********** Code for HashSetImplementation_String **************
1133 $inherits(HashSetImplementation_String, HashSetImplementation); 1216 $inherits(HashSetImplementation_String, HashSetImplementation);
1134 function HashSetImplementation_String() {} 1217 function HashSetImplementation_String() {}
1135 // ********** Code for HashSetImplementation_Type ************** 1218 // ********** Code for HashSetImplementation_Type **************
1136 $inherits(HashSetImplementation_Type, HashSetImplementation); 1219 $inherits(HashSetImplementation_Type, HashSetImplementation);
1137 function HashSetImplementation_Type() {} 1220 function HashSetImplementation_Type() {}
1138 // ********** Code for HashSetIterator ************** 1221 // ********** Code for HashSetIterator **************
(...skipping 3777 matching lines...) Expand 10 before | Expand all | Expand 10 after
4916 $globals.world.error('duplicate final modifier', mod.get$span()); 4999 $globals.world.error('duplicate final modifier', mod.get$span());
4917 } 5000 }
4918 this.isFinal = true; 5001 this.isFinal = true;
4919 } 5002 }
4920 else { 5003 else {
4921 $globals.world.error(('' + mod + ' modifier not allowed on field'), mod. get$span()); 5004 $globals.world.error(('' + mod + ' modifier not allowed on field'), mod. get$span());
4922 } 5005 }
4923 } 5006 }
4924 } 5007 }
4925 this.type = this.resolveType(this.definition.type, false); 5008 this.type = this.resolveType(this.definition.type, false);
4926 if (this.isStatic && this.type.get$hasTypeParams()) { 5009 if (this.isStatic && !this.get$isFactory() && this.type.get$hasTypeParams()) {
4927 $globals.world.error('using type parameter in static context', this.definiti on.type.span); 5010 $globals.world.error('using type parameter in static context', this.definiti on.type.span);
4928 } 5011 }
4929 if (this.isStatic && this.isFinal && this.value == null) { 5012 if (this.isStatic && this.isFinal && this.value == null) {
4930 $globals.world.error('static final field is missing initializer', this.get$s pan()); 5013 $globals.world.error('static final field is missing initializer', this.get$s pan());
4931 } 5014 }
4932 this.get$library()._addMember(this); 5015 this.get$library()._addMember(this);
4933 } 5016 }
4934 FieldMember.prototype.computeValue = function() { 5017 FieldMember.prototype.computeValue = function() {
4935 if (this.value == null) return null; 5018 if (this.value == null) return null;
4936 if (this._computedValue == null) { 5019 if (this._computedValue == null) {
(...skipping 18 matching lines...) Expand all
4955 this._computedValue = $globals.world.gen.globalForStaticField(this, this._ computedValue, [this._computedValue]); 5038 this._computedValue = $globals.world.gen.globalForStaticField(this, this._ computedValue, [this._computedValue]);
4956 } 5039 }
4957 this._computing = false; 5040 this._computing = false;
4958 } 5041 }
4959 return this._computedValue; 5042 return this._computedValue;
4960 } 5043 }
4961 FieldMember.prototype._get = function(context, node, target, isDynamic) { 5044 FieldMember.prototype._get = function(context, node, target, isDynamic) {
4962 if (this.isNative && this.get$returnType() != null) { 5045 if (this.isNative && this.get$returnType() != null) {
4963 this.get$returnType().markUsed(); 5046 this.get$returnType().markUsed();
4964 if ((this.get$returnType() instanceof DefinedType)) { 5047 if ((this.get$returnType() instanceof DefinedType)) {
4965 var factory_ = this.get$returnType().get$genericType().factory_; 5048 var defaultType = this.get$returnType().get$genericType().defaultType;
4966 if (factory_ != null && factory_.get$isNative()) { 5049 if (defaultType != null && defaultType.get$isNative()) {
4967 factory_.markUsed$0(); 5050 defaultType.markUsed$0();
4968 } 5051 }
4969 } 5052 }
4970 } 5053 }
4971 if (this.isStatic) { 5054 if (this.isStatic) {
4972 this.declaringType.markUsed(); 5055 this.declaringType.markUsed();
4973 var cv = this.computeValue(); 5056 var cv = this.computeValue();
4974 if (this.isFinal) { 5057 if (this.isFinal) {
4975 return cv; 5058 return cv;
4976 } 5059 }
4977 $globals.world.gen.hasStatics = true; 5060 $globals.world.gen.hasStatics = true;
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
5295 this.definition = definition; 5378 this.definition = definition;
5296 // Initializers done 5379 // Initializers done
5297 Member.call(this, name, declaringType); 5380 Member.call(this, name, declaringType);
5298 } 5381 }
5299 MethodMember.prototype.get$definition = function() { return this.definition; }; 5382 MethodMember.prototype.get$definition = function() { return this.definition; };
5300 MethodMember.prototype.set$definition = function(value) { return this.definition = value; }; 5383 MethodMember.prototype.set$definition = function(value) { return this.definition = value; };
5301 MethodMember.prototype.get$returnType = function() { return this.returnType; }; 5384 MethodMember.prototype.get$returnType = function() { return this.returnType; };
5302 MethodMember.prototype.set$returnType = function(value) { return this.returnType = value; }; 5385 MethodMember.prototype.set$returnType = function(value) { return this.returnType = value; };
5303 MethodMember.prototype.get$parameters = function() { return this.parameters; }; 5386 MethodMember.prototype.get$parameters = function() { return this.parameters; };
5304 MethodMember.prototype.set$parameters = function(value) { return this.parameters = value; }; 5387 MethodMember.prototype.set$parameters = function(value) { return this.parameters = value; };
5305 MethodMember.prototype.get$typeParameters = function() { return this.typeParamet ers; };
5306 MethodMember.prototype.set$typeParameters = function(value) { return this.typePa rameters = value; };
5307 MethodMember.prototype.get$isStatic = function() { return this.isStatic; }; 5388 MethodMember.prototype.get$isStatic = function() { return this.isStatic; };
5308 MethodMember.prototype.set$isStatic = function(value) { return this.isStatic = v alue; }; 5389 MethodMember.prototype.set$isStatic = function(value) { return this.isStatic = v alue; };
5309 MethodMember.prototype.get$isAbstract = function() { return this.isAbstract; }; 5390 MethodMember.prototype.get$isAbstract = function() { return this.isAbstract; };
5310 MethodMember.prototype.set$isAbstract = function(value) { return this.isAbstract = value; }; 5391 MethodMember.prototype.set$isAbstract = function(value) { return this.isAbstract = value; };
5311 MethodMember.prototype.get$isConst = function() { return this.isConst; }; 5392 MethodMember.prototype.get$isConst = function() { return this.isConst; };
5312 MethodMember.prototype.set$isConst = function(value) { return this.isConst = val ue; }; 5393 MethodMember.prototype.set$isConst = function(value) { return this.isConst = val ue; };
5313 MethodMember.prototype.get$isFactory = function() { return this.isFactory; }; 5394 MethodMember.prototype.get$isFactory = function() { return this.isFactory; };
5314 MethodMember.prototype.set$isFactory = function(value) { return this.isFactory = value; }; 5395 MethodMember.prototype.set$isFactory = function(value) { return this.isFactory = value; };
5315 MethodMember.prototype.get$isLambda = function() { return this.isLambda; }; 5396 MethodMember.prototype.get$isLambda = function() { return this.isLambda; };
5316 MethodMember.prototype.set$isLambda = function(value) { return this.isLambda = v alue; }; 5397 MethodMember.prototype.set$isLambda = function(value) { return this.isLambda = v alue; };
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
5954 this.isAbstract = true; 6035 this.isAbstract = true;
5955 } 6036 }
5956 else { 6037 else {
5957 $globals.world.error(('' + mod + ' modifier not allowed on method'), mod .get$span()); 6038 $globals.world.error(('' + mod + ' modifier not allowed on method'), mod .get$span());
5958 } 6039 }
5959 } 6040 }
5960 } 6041 }
5961 if (this.isFactory) { 6042 if (this.isFactory) {
5962 this.isStatic = true; 6043 this.isStatic = true;
5963 } 6044 }
5964 if (this.definition.typeParameters != null) {
5965 if (!this.isFactory) {
5966 $globals.world.error('Only factories are allowed to have explicit type par ameters', this.definition.typeParameters.$index(0).get$span());
5967 }
5968 else {
5969 this.typeParameters = this.definition.typeParameters;
5970 var $$list = this.definition.typeParameters;
5971 for (var $$i = 0;$$i < $$list.length; $$i++) {
5972 var tp = $$list.$index($$i);
5973 tp.set$enclosingElement(this);
5974 tp.resolve$0();
5975 }
5976 }
5977 }
5978 if (this.get$isOperator() && this.isStatic && !this.get$isCallMethod()) { 6045 if (this.get$isOperator() && this.isStatic && !this.get$isCallMethod()) {
5979 $globals.world.error(('operator method may not be static "' + this.name + '" '), this.get$span()); 6046 $globals.world.error(('operator method may not be static "' + this.name + '" '), this.get$span());
5980 } 6047 }
5981 if (this.isAbstract) { 6048 if (this.isAbstract) {
5982 if (this.definition.body != null && !(this.declaringType.get$definition() in stanceof FunctionTypeDefinition)) { 6049 if (this.definition.body != null && !(this.declaringType.get$definition() in stanceof FunctionTypeDefinition)) {
5983 $globals.world.error('abstract method can not have a body', this.get$span( )); 6050 $globals.world.error('abstract method can not have a body', this.get$span( ));
5984 } 6051 }
5985 if (this.isStatic && !(this.declaringType.get$definition() instanceof Functi onTypeDefinition)) { 6052 if (this.isStatic && !(this.declaringType.get$definition() instanceof Functi onTypeDefinition)) {
5986 $globals.world.error('static method can not be abstract', this.get$span()) ; 6053 $globals.world.error('static method can not be abstract', this.get$span()) ;
5987 } 6054 }
(...skipping 16 matching lines...) Expand all
6004 var param = new Parameter(formal, this); 6071 var param = new Parameter(formal, this);
6005 param.resolve$0(); 6072 param.resolve$0();
6006 this.parameters.add(param); 6073 this.parameters.add(param);
6007 } 6074 }
6008 if (!this.isLambda) { 6075 if (!this.isLambda) {
6009 this.get$library()._addMember(this); 6076 this.get$library()._addMember(this);
6010 } 6077 }
6011 } 6078 }
6012 MethodMember.prototype.resolveType = function(node, typeErrors) { 6079 MethodMember.prototype.resolveType = function(node, typeErrors) {
6013 var t = Element.prototype.resolveType.call(this, node, typeErrors); 6080 var t = Element.prototype.resolveType.call(this, node, typeErrors);
6014 if (this.isStatic && (t instanceof ParameterType) && (this.typeParameters == n ull || !this.typeParameters.some((function (p) { 6081 if (this.isStatic && !this.isFactory && (t instanceof ParameterType)) {
6015 return p === t;
6016 })
6017 ))) {
6018 $globals.world.error('using type parameter in static context.', node.span); 6082 $globals.world.error('using type parameter in static context.', node.span);
6019 } 6083 }
6020 return t; 6084 return t;
6021 } 6085 }
6022 MethodMember.prototype._get$3 = function($0, $1, $2) { 6086 MethodMember.prototype._get$3 = function($0, $1, $2) {
6023 return this._get($0, $1, $2, false); 6087 return this._get($0, $1, $2, false);
6024 }; 6088 };
6025 MethodMember.prototype._get$3$isDynamic = MethodMember.prototype._get; 6089 MethodMember.prototype._get$3$isDynamic = MethodMember.prototype._get;
6026 MethodMember.prototype._get$4 = MethodMember.prototype._get; 6090 MethodMember.prototype._get$4 = MethodMember.prototype._get;
6027 MethodMember.prototype._set$4 = function($0, $1, $2, $3) { 6091 MethodMember.prototype._set$4 = function($0, $1, $2, $3) {
(...skipping 2373 matching lines...) Expand 10 before | Expand all | Expand 10 after
8401 } 8465 }
8402 var _implements = null; 8466 var _implements = null;
8403 if (this._maybeEat(77/*TokenKind.IMPLEMENTS*/)) { 8467 if (this._maybeEat(77/*TokenKind.IMPLEMENTS*/)) {
8404 _implements = this.typeList(); 8468 _implements = this.typeList();
8405 } 8469 }
8406 var _native = null; 8470 var _native = null;
8407 if (this._maybeEat(81/*TokenKind.NATIVE*/)) { 8471 if (this._maybeEat(81/*TokenKind.NATIVE*/)) {
8408 _native = this.maybeStringLiteral(); 8472 _native = this.maybeStringLiteral();
8409 if (_native != null) _native = new NativeType(_native); 8473 if (_native != null) _native = new NativeType(_native);
8410 } 8474 }
8411 var _factory = null; 8475 var oldFactory = this._maybeEat(75/*TokenKind.FACTORY*/);
8412 if (this._maybeEat(75/*TokenKind.FACTORY*/)) { 8476 var defaultType = null;
8413 _factory = this.nameTypeReference(); 8477 if (oldFactory || this._maybeEat(94/*TokenKind.DEFAULT*/)) {
8478 if (oldFactory) {
8479 $globals.world.warning('factory no longer supported, use "default" instead ', this._previousToken.get$span());
8480 }
8481 var baseType = this.nameTypeReference();
8482 var typeParams0 = null;
8414 if (this._peekKind(52/*TokenKind.LT*/)) { 8483 if (this._peekKind(52/*TokenKind.LT*/)) {
8415 this.typeParameters(); 8484 typeParams0 = this.typeParameters();
8416 } 8485 }
8486 defaultType = new DefaultTypeReference(oldFactory, baseType, typeParams0, th is._makeSpan(baseType.get$span().get$start()));
8417 } 8487 }
8418 var body = []; 8488 var body = [];
8419 if (this._maybeEat(6/*TokenKind.LBRACE*/)) { 8489 if (this._maybeEat(6/*TokenKind.LBRACE*/)) {
8420 while (!this._maybeEat(7/*TokenKind.RBRACE*/)) { 8490 while (!this._maybeEat(7/*TokenKind.RBRACE*/)) {
8421 body.add$1(this.declaration(true)); 8491 body.add$1(this.declaration(true));
8422 if (this._recover) { 8492 if (this._recover) {
8423 if (!this._recoverTo(7/*TokenKind.RBRACE*/, 10/*TokenKind.SEMICOLON*/)) break; 8493 if (!this._recoverTo(7/*TokenKind.RBRACE*/, 10/*TokenKind.SEMICOLON*/)) break;
8424 this._maybeEat(10/*TokenKind.SEMICOLON*/); 8494 this._maybeEat(10/*TokenKind.SEMICOLON*/);
8425 } 8495 }
8426 } 8496 }
8427 } 8497 }
8428 else { 8498 else {
8429 this._errorExpected('block starting with "{" or ";"'); 8499 this._errorExpected('block starting with "{" or ";"');
8430 } 8500 }
8431 return new TypeDefinition(kind == 73/*TokenKind.CLASS*/, name, typeParams, _ex tends, _implements, _native, _factory, body, this._makeSpan(start)); 8501 return new TypeDefinition(kind == 73/*TokenKind.CLASS*/, name, typeParams, _ex tends, _implements, _native, defaultType, body, this._makeSpan(start));
8432 } 8502 }
8433 Parser.prototype.functionTypeAlias = function() { 8503 Parser.prototype.functionTypeAlias = function() {
8434 var start = this._peekToken.start; 8504 var start = this._peekToken.start;
8435 this._eat(87/*TokenKind.TYPEDEF*/); 8505 this._eat(87/*TokenKind.TYPEDEF*/);
8436 var di = this.declaredIdentifier(false); 8506 var di = this.declaredIdentifier(false);
8437 var typeParams = null; 8507 var typeParams = null;
8438 if (this._peekKind(52/*TokenKind.LT*/)) { 8508 if (this._peekKind(52/*TokenKind.LT*/)) {
8439 typeParams = this.typeParameters(); 8509 typeParams = this.typeParameters();
8440 } 8510 }
8441 var formals = this.formalParameterList(); 8511 var formals = this.formalParameterList();
8442 this._eatSemicolon(); 8512 this._eatSemicolon();
8443 var func = new FunctionDefinition(null, di.get$type(), di.get$name(), formals, null, null, null, null, this._makeSpan(start)); 8513 var func = new FunctionDefinition(null, di.get$type(), di.get$name(), formals, null, null, null, this._makeSpan(start));
8444 return new FunctionTypeDefinition(func, typeParams, this._makeSpan(start)); 8514 return new FunctionTypeDefinition(func, typeParams, this._makeSpan(start));
8445 } 8515 }
8446 Parser.prototype.initializers = function() { 8516 Parser.prototype.initializers = function() {
8447 this._inhibitLambda = true; 8517 this._inhibitLambda = true;
8448 var ret = []; 8518 var ret = [];
8449 do { 8519 do {
8450 ret.add$1(this.expression()); 8520 ret.add$1(this.expression());
8451 } 8521 }
8452 while (this._maybeEat(11/*TokenKind.COMMA*/)) 8522 while (this._maybeEat(11/*TokenKind.COMMA*/))
8453 this._inhibitLambda = false; 8523 this._inhibitLambda = false;
(...skipping 20 matching lines...) Expand all
8474 return this.block(); 8544 return this.block();
8475 } 8545 }
8476 } 8546 }
8477 else if (!inExpression) { 8547 else if (!inExpression) {
8478 if (this._maybeEat(10/*TokenKind.SEMICOLON*/)) { 8548 if (this._maybeEat(10/*TokenKind.SEMICOLON*/)) {
8479 return null; 8549 return null;
8480 } 8550 }
8481 } 8551 }
8482 this._error('Expected function body (neither { nor => found)'); 8552 this._error('Expected function body (neither { nor => found)');
8483 } 8553 }
8484 Parser.prototype.finishField = function(start, modifiers, typeParams, type, name , value) { 8554 Parser.prototype.finishField = function(start, modifiers, type, name, value) {
8485 if (typeParams != null) {
8486 $globals.world.internalError('trying to create a generic field', this._makeS pan(start));
8487 }
8488 var names = [name]; 8555 var names = [name];
8489 var values = [value]; 8556 var values = [value];
8490 while (this._maybeEat(11/*TokenKind.COMMA*/)) { 8557 while (this._maybeEat(11/*TokenKind.COMMA*/)) {
8491 names.add$1(this.identifier()); 8558 names.add$1(this.identifier());
8492 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) { 8559 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) {
8493 values.add$1(this.expression()); 8560 values.add$1(this.expression());
8494 } 8561 }
8495 else { 8562 else {
8496 values.add$1(); 8563 values.add$1();
8497 } 8564 }
8498 } 8565 }
8499 this._eatSemicolon(); 8566 this._eatSemicolon();
8500 return new VariableDefinition(modifiers, type, names, values, this._makeSpan(s tart)); 8567 return new VariableDefinition(modifiers, type, names, values, this._makeSpan(s tart));
8501 } 8568 }
8502 Parser.prototype.finishDefinition = function(start, modifiers, di, typeParams) { 8569 Parser.prototype.finishDefinition = function(start, modifiers, di) {
8503 switch (this._peek()) { 8570 switch (this._peek()) {
8504 case 2/*TokenKind.LPAREN*/: 8571 case 2/*TokenKind.LPAREN*/:
8505 8572
8506 var formals = this.formalParameterList(); 8573 var formals = this.formalParameterList();
8507 var inits = null, native_ = null; 8574 var inits = null, native_ = null;
8508 if (this._maybeEat(8/*TokenKind.COLON*/)) { 8575 if (this._maybeEat(8/*TokenKind.COLON*/)) {
8509 inits = this.initializers(); 8576 inits = this.initializers();
8510 } 8577 }
8511 if (this._maybeEat(81/*TokenKind.NATIVE*/)) { 8578 if (this._maybeEat(81/*TokenKind.NATIVE*/)) {
8512 native_ = this.maybeStringLiteral(); 8579 native_ = this.maybeStringLiteral();
8513 if (native_ == null) native_ = ''; 8580 if (native_ == null) native_ = '';
8514 } 8581 }
8515 var body = this.functionBody(false); 8582 var body = this.functionBody(false);
8516 if (di.get$name() == null) { 8583 if (di.get$name() == null) {
8517 di.set$name(di.get$type().get$name()); 8584 di.set$name(di.get$type().get$name());
8518 } 8585 }
8519 return new FunctionDefinition(modifiers, di.get$type(), di.get$name(), for mals, typeParams, inits, native_, body, this._makeSpan(start)); 8586 return new FunctionDefinition(modifiers, di.get$type(), di.get$name(), for mals, inits, native_, body, this._makeSpan(start));
8520 8587
8521 case 20/*TokenKind.ASSIGN*/: 8588 case 20/*TokenKind.ASSIGN*/:
8522 8589
8523 this._eat(20/*TokenKind.ASSIGN*/); 8590 this._eat(20/*TokenKind.ASSIGN*/);
8524 var value = this.expression(); 8591 var value = this.expression();
8525 return this.finishField(start, modifiers, typeParams, di.get$type(), di.ge t$name(), value); 8592 return this.finishField(start, modifiers, di.get$type(), di.get$name(), va lue);
8526 8593
8527 case 11/*TokenKind.COMMA*/: 8594 case 11/*TokenKind.COMMA*/:
8528 case 10/*TokenKind.SEMICOLON*/: 8595 case 10/*TokenKind.SEMICOLON*/:
8529 8596
8530 return this.finishField(start, modifiers, typeParams, di.get$type(), di.ge t$name(), null); 8597 return this.finishField(start, modifiers, di.get$type(), di.get$name(), nu ll);
8531 8598
8532 default: 8599 default:
8533 8600
8534 this._errorExpected('declaration'); 8601 this._errorExpected('declaration');
8535 return null; 8602 return null;
8536 8603
8537 } 8604 }
8538 } 8605 }
8539 Parser.prototype.declaration = function(includeOperators) { 8606 Parser.prototype.declaration = function(includeOperators) {
8540 var start = this._peekToken.start; 8607 var start = this._peekToken.start;
8541 if (this._peekKind(75/*TokenKind.FACTORY*/)) { 8608 if (this._peekKind(75/*TokenKind.FACTORY*/)) {
8542 return this.factoryConstructorDeclaration(); 8609 return this.factoryConstructorDeclaration();
8543 } 8610 }
8544 var modifiers = this._readModifiers(); 8611 var modifiers = this._readModifiers();
8545 return this.finishDefinition(start, modifiers, this.declaredIdentifier(include Operators), null); 8612 return this.finishDefinition(start, modifiers, this.declaredIdentifier(include Operators));
8546 } 8613 }
8547 Parser.prototype.factoryConstructorDeclaration = function() { 8614 Parser.prototype.factoryConstructorDeclaration = function() {
8548 var start = this._peekToken.start; 8615 var start = this._peekToken.start;
8549 var factoryToken = this._next(); 8616 var factoryToken = this._next();
8550 var names = [this.identifier()]; 8617 var names = [this.identifier()];
8551 while (this._maybeEat(14/*TokenKind.DOT*/)) { 8618 while (this._maybeEat(14/*TokenKind.DOT*/)) {
8552 names.add$1(this.identifier()); 8619 names.add$1(this.identifier());
8553 } 8620 }
8554 var typeParams = null;
8555 if (this._peekKind(52/*TokenKind.LT*/)) { 8621 if (this._peekKind(52/*TokenKind.LT*/)) {
8556 typeParams = this.typeParameters(); 8622 var tp = this.typeParameters();
8623 $globals.world.warning('type parameters on factories are no longer supported , place them on the class instead'/*'type parameters on factories are no longer supported, '
8624 + 'place them on the class instead'*/, this._makeSpan(tp.$index(0) .get$span().get$start()));
8557 } 8625 }
8558 var name = null; 8626 var name = null;
8559 var type = null; 8627 var type = null;
8560 if (this._maybeEat(14/*TokenKind.DOT*/)) { 8628 if (this._maybeEat(14/*TokenKind.DOT*/)) {
8561 name = this.identifier(); 8629 name = this.identifier();
8562 } 8630 }
8563 else if (typeParams == null) { 8631 else {
8564 if (names.length > 1) { 8632 if (names.length > 1) {
8565 name = names.removeLast$0(); 8633 name = names.removeLast$0();
8566 } 8634 }
8567 else { 8635 else {
8568 name = new Identifier('', names.$index(0).get$span()); 8636 name = new Identifier('', names.$index(0).get$span());
8569 } 8637 }
8570 } 8638 }
8571 else {
8572 name = new Identifier('', names.$index(0).get$span());
8573 }
8574 if (names.length > 1) { 8639 if (names.length > 1) {
8575 this._error('unsupported qualified name for factory', names.$index(0).get$sp an()); 8640 this._error('unsupported qualified name for factory', names.$index(0).get$sp an());
8576 } 8641 }
8577 type = new NameTypeReference(false, names.$index(0), null, names.$index(0).get $span()); 8642 type = new NameTypeReference(false, names.$index(0), null, names.$index(0).get $span());
8578 var di = new DeclaredIdentifier(type, name, this._makeSpan(start)); 8643 var di = new DeclaredIdentifier(type, name, this._makeSpan(start));
8579 return this.finishDefinition(start, [factoryToken], di, typeParams); 8644 return this.finishDefinition(start, [factoryToken], di);
8580 } 8645 }
8581 Parser.prototype.statement = function() { 8646 Parser.prototype.statement = function() {
8582 switch (this._peek()) { 8647 switch (this._peek()) {
8583 case 89/*TokenKind.BREAK*/: 8648 case 89/*TokenKind.BREAK*/:
8584 8649
8585 return this.breakStatement(); 8650 return this.breakStatement();
8586 8651
8587 case 93/*TokenKind.CONTINUE*/: 8652 case 93/*TokenKind.CONTINUE*/:
8588 8653
8589 return this.continueStatement(); 8654 return this.continueStatement();
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
8657 this._eatSemicolon(); 8722 this._eatSemicolon();
8658 expr.get$func().set$span(this._makeSpan(start)); 8723 expr.get$func().set$span(this._makeSpan(start));
8659 } 8724 }
8660 return expr.get$func(); 8725 return expr.get$func();
8661 } 8726 }
8662 else if ((expr instanceof DeclaredIdentifier)) { 8727 else if ((expr instanceof DeclaredIdentifier)) {
8663 var value = null; 8728 var value = null;
8664 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) { 8729 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) {
8665 value = this.expression(); 8730 value = this.expression();
8666 } 8731 }
8667 return this.finishField(start, null, null, expr.get$type(), expr.get$name(), value); 8732 return this.finishField(start, null, expr.get$type(), expr.get$name(), value );
8668 } 8733 }
8669 else if (this._isBin(expr, 20/*TokenKind.ASSIGN*/) && ((expr.get$x() instanceo f DeclaredIdentifier))) { 8734 else if (this._isBin(expr, 20/*TokenKind.ASSIGN*/) && ((expr.get$x() instanceo f DeclaredIdentifier))) {
8670 var di = expr.get$x(); 8735 var di = expr.get$x();
8671 return this.finishField(start, null, null, di.type, di.name, expr.get$y()); 8736 return this.finishField(start, null, di.type, di.name, expr.get$y());
8672 } 8737 }
8673 else if (this._isBin(expr, 52/*TokenKind.LT*/) && this._maybeEat(11/*TokenKind .COMMA*/)) { 8738 else if (this._isBin(expr, 52/*TokenKind.LT*/) && this._maybeEat(11/*TokenKind .COMMA*/)) {
8674 var baseType = this._makeType(expr.get$x()); 8739 var baseType = this._makeType(expr.get$x());
8675 var typeArgs = [this._makeType(expr.get$y())]; 8740 var typeArgs = [this._makeType(expr.get$y())];
8676 var gt = this._finishTypeArguments(baseType, 0, typeArgs); 8741 var gt = this._finishTypeArguments(baseType, 0, typeArgs);
8677 var name = this.identifier(); 8742 var name = this.identifier();
8678 var value = null; 8743 var value = null;
8679 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) { 8744 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) {
8680 value = this.expression(); 8745 value = this.expression();
8681 } 8746 }
8682 return this.finishField(expr.get$span().get$start(), null, null, gt, name, v alue); 8747 return this.finishField(expr.get$span().get$start(), null, gt, name, value);
8683 } 8748 }
8684 else { 8749 else {
8685 this._eatSemicolon(); 8750 this._eatSemicolon();
8686 return new ExpressionStatement(expr, this._makeSpan(expr.get$span().get$star t())); 8751 return new ExpressionStatement(expr, this._makeSpan(expr.get$span().get$star t()));
8687 } 8752 }
8688 } 8753 }
8689 Parser.prototype.testCondition = function() { 8754 Parser.prototype.testCondition = function() {
8690 this._eatLeftParen(); 8755 this._eatLeftParen();
8691 var ret = this.expression(); 8756 var ret = this.expression();
8692 this._eat(3/*TokenKind.RPAREN*/); 8757 this._eat(3/*TokenKind.RPAREN*/);
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
9304 this._next(); 9369 this._next();
9305 this._errorExpected('string literal, but found incomplete string'); 9370 this._errorExpected('string literal, but found incomplete string');
9306 } 9371 }
9307 return null; 9372 return null;
9308 } 9373 }
9309 Parser.prototype._parenOrLambda = function() { 9374 Parser.prototype._parenOrLambda = function() {
9310 var start = this._peekToken.start; 9375 var start = this._peekToken.start;
9311 if (this._atClosureParameters()) { 9376 if (this._atClosureParameters()) {
9312 var formals = this.formalParameterList(); 9377 var formals = this.formalParameterList();
9313 var body = this.functionBody(true); 9378 var body = this.functionBody(true);
9314 var func = new FunctionDefinition(null, null, null, formals, null, null, nul l, body, this._makeSpan(start)); 9379 var func = new FunctionDefinition(null, null, null, formals, null, null, bod y, this._makeSpan(start));
9315 return new LambdaExpression(func, func.get$span()); 9380 return new LambdaExpression(func, func.get$span());
9316 } 9381 }
9317 else { 9382 else {
9318 this._eatLeftParen(); 9383 this._eatLeftParen();
9319 var saved = this._inhibitLambda; 9384 var saved = this._inhibitLambda;
9320 this._inhibitLambda = false; 9385 this._inhibitLambda = false;
9321 var expr = this.expression(); 9386 var expr = this.expression();
9322 this._eat(3/*TokenKind.RPAREN*/); 9387 this._eat(3/*TokenKind.RPAREN*/);
9323 this._inhibitLambda = saved; 9388 this._inhibitLambda = saved;
9324 return new ParenExpression(expr, this._makeSpan(start)); 9389 return new ParenExpression(expr, this._makeSpan(start));
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
9706 var name = di.get$name(); 9771 var name = di.get$name();
9707 var value = null; 9772 var value = null;
9708 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) { 9773 if (this._maybeEat(20/*TokenKind.ASSIGN*/)) {
9709 if (!inOptionalBlock) { 9774 if (!inOptionalBlock) {
9710 this._error('default values only allowed inside [optional] section'); 9775 this._error('default values only allowed inside [optional] section');
9711 } 9776 }
9712 value = this.expression(); 9777 value = this.expression();
9713 } 9778 }
9714 else if (this._peekKind(2/*TokenKind.LPAREN*/)) { 9779 else if (this._peekKind(2/*TokenKind.LPAREN*/)) {
9715 var formals = this.formalParameterList(); 9780 var formals = this.formalParameterList();
9716 var func = new FunctionDefinition(null, type, name, formals, null, null, nul l, null, this._makeSpan(start)); 9781 var func = new FunctionDefinition(null, type, name, formals, null, null, nul l, this._makeSpan(start));
9717 type = new FunctionTypeReference(false, func, func.get$span()); 9782 type = new FunctionTypeReference(false, func, func.get$span());
9718 } 9783 }
9719 if (inOptionalBlock && value == null) { 9784 if (inOptionalBlock && value == null) {
9720 value = new NullExpression(this._makeSpan(start)); 9785 value = new NullExpression(this._makeSpan(start));
9721 } 9786 }
9722 return new FormalNode(isThis, isRest, type, name, value, this._makeSpan(start) ); 9787 return new FormalNode(isThis, isRest, type, name, value, this._makeSpan(start) );
9723 } 9788 }
9724 Parser.prototype.formalParameterList = function() { 9789 Parser.prototype.formalParameterList = function() {
9725 this._eatLeftParen(); 9790 this._eatLeftParen();
9726 var formals = []; 9791 var formals = [];
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
9760 type = null; 9825 type = null;
9761 } 9826 }
9762 else if ((expr instanceof DeclaredIdentifier)) { 9827 else if ((expr instanceof DeclaredIdentifier)) {
9763 name = expr.get$name(); 9828 name = expr.get$name();
9764 type = expr.get$type(); 9829 type = expr.get$type();
9765 } 9830 }
9766 else { 9831 else {
9767 this._error('bad function body', expr.get$span()); 9832 this._error('bad function body', expr.get$span());
9768 } 9833 }
9769 var span = new SourceSpan(expr.get$span().get$file(), expr.get$span().get$star t(), body.get$span().get$end()); 9834 var span = new SourceSpan(expr.get$span().get$file(), expr.get$span().get$star t(), body.get$span().get$end());
9770 var func = new FunctionDefinition(null, type, name, formals, null, null, null, body, span); 9835 var func = new FunctionDefinition(null, type, name, formals, null, null, body, span);
9771 return new LambdaExpression(func, func.get$span()); 9836 return new LambdaExpression(func, func.get$span());
9772 } 9837 }
9773 Parser.prototype._makeDeclaredIdentifier = function(e) { 9838 Parser.prototype._makeDeclaredIdentifier = function(e) {
9774 if ((e instanceof VarExpression)) { 9839 if ((e instanceof VarExpression)) {
9775 return new DeclaredIdentifier(null, e.get$name(), e.get$span()); 9840 return new DeclaredIdentifier(null, e.get$name(), e.get$span());
9776 } 9841 }
9777 else if ((e instanceof DeclaredIdentifier)) { 9842 else if ((e instanceof DeclaredIdentifier)) {
9778 return e; 9843 return e;
9779 } 9844 }
9780 else { 9845 else {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
9878 DirectiveDefinition.prototype.get$name = function() { return this.name; }; 9943 DirectiveDefinition.prototype.get$name = function() { return this.name; };
9879 DirectiveDefinition.prototype.set$name = function(value) { return this.name = va lue; }; 9944 DirectiveDefinition.prototype.set$name = function(value) { return this.name = va lue; };
9880 DirectiveDefinition.prototype.get$arguments = function() { return this.arguments ; }; 9945 DirectiveDefinition.prototype.get$arguments = function() { return this.arguments ; };
9881 DirectiveDefinition.prototype.set$arguments = function(value) { return this.argu ments = value; }; 9946 DirectiveDefinition.prototype.set$arguments = function(value) { return this.argu ments = value; };
9882 DirectiveDefinition.prototype.visit = function(visitor) { 9947 DirectiveDefinition.prototype.visit = function(visitor) {
9883 return visitor.visitDirectiveDefinition(this); 9948 return visitor.visitDirectiveDefinition(this);
9884 } 9949 }
9885 DirectiveDefinition.prototype.visit$1 = DirectiveDefinition.prototype.visit; 9950 DirectiveDefinition.prototype.visit$1 = DirectiveDefinition.prototype.visit;
9886 // ********** Code for TypeDefinition ************** 9951 // ********** Code for TypeDefinition **************
9887 $inherits(TypeDefinition, Definition); 9952 $inherits(TypeDefinition, Definition);
9888 function TypeDefinition(isClass, name, typeParameters, extendsTypes, implementsT ypes, nativeType, factoryType, body, span) { 9953 function TypeDefinition(isClass, name, typeParameters, extendsTypes, implementsT ypes, nativeType, defaultType, body, span) {
9889 this.isClass = isClass; 9954 this.isClass = isClass;
9890 this.name = name; 9955 this.name = name;
9891 this.typeParameters = typeParameters; 9956 this.typeParameters = typeParameters;
9892 this.extendsTypes = extendsTypes; 9957 this.extendsTypes = extendsTypes;
9893 this.implementsTypes = implementsTypes; 9958 this.implementsTypes = implementsTypes;
9894 this.nativeType = nativeType; 9959 this.nativeType = nativeType;
9895 this.factoryType = factoryType; 9960 this.defaultType = defaultType;
9896 this.body = body; 9961 this.body = body;
9897 // Initializers done 9962 // Initializers done
9898 Definition.call(this, span); 9963 Definition.call(this, span);
9899 } 9964 }
9900 TypeDefinition.prototype.get$isClass = function() { return this.isClass; }; 9965 TypeDefinition.prototype.get$isClass = function() { return this.isClass; };
9901 TypeDefinition.prototype.set$isClass = function(value) { return this.isClass = v alue; }; 9966 TypeDefinition.prototype.set$isClass = function(value) { return this.isClass = v alue; };
9902 TypeDefinition.prototype.get$name = function() { return this.name; }; 9967 TypeDefinition.prototype.get$name = function() { return this.name; };
9903 TypeDefinition.prototype.set$name = function(value) { return this.name = value; }; 9968 TypeDefinition.prototype.set$name = function(value) { return this.name = value; };
9904 TypeDefinition.prototype.get$typeParameters = function() { return this.typeParam eters; }; 9969 TypeDefinition.prototype.get$typeParameters = function() { return this.typeParam eters; };
9905 TypeDefinition.prototype.set$typeParameters = function(value) { return this.type Parameters = value; }; 9970 TypeDefinition.prototype.set$typeParameters = function(value) { return this.type Parameters = value; };
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
9942 VariableDefinition.prototype.get$names = function() { return this.names; }; 10007 VariableDefinition.prototype.get$names = function() { return this.names; };
9943 VariableDefinition.prototype.set$names = function(value) { return this.names = v alue; }; 10008 VariableDefinition.prototype.set$names = function(value) { return this.names = v alue; };
9944 VariableDefinition.prototype.get$values = function() { return this.values; }; 10009 VariableDefinition.prototype.get$values = function() { return this.values; };
9945 VariableDefinition.prototype.set$values = function(value) { return this.values = value; }; 10010 VariableDefinition.prototype.set$values = function(value) { return this.values = value; };
9946 VariableDefinition.prototype.visit = function(visitor) { 10011 VariableDefinition.prototype.visit = function(visitor) {
9947 return visitor.visitVariableDefinition(this); 10012 return visitor.visitVariableDefinition(this);
9948 } 10013 }
9949 VariableDefinition.prototype.visit$1 = VariableDefinition.prototype.visit; 10014 VariableDefinition.prototype.visit$1 = VariableDefinition.prototype.visit;
9950 // ********** Code for FunctionDefinition ************** 10015 // ********** Code for FunctionDefinition **************
9951 $inherits(FunctionDefinition, Definition); 10016 $inherits(FunctionDefinition, Definition);
9952 function FunctionDefinition(modifiers, returnType, name, formals, typeParameters , initializers, nativeBody, body, span) { 10017 function FunctionDefinition(modifiers, returnType, name, formals, initializers, nativeBody, body, span) {
9953 this.modifiers = modifiers; 10018 this.modifiers = modifiers;
9954 this.returnType = returnType; 10019 this.returnType = returnType;
9955 this.name = name; 10020 this.name = name;
9956 this.formals = formals; 10021 this.formals = formals;
9957 this.typeParameters = typeParameters;
9958 this.initializers = initializers; 10022 this.initializers = initializers;
9959 this.nativeBody = nativeBody; 10023 this.nativeBody = nativeBody;
9960 this.body = body; 10024 this.body = body;
9961 // Initializers done 10025 // Initializers done
9962 Definition.call(this, span); 10026 Definition.call(this, span);
9963 } 10027 }
9964 FunctionDefinition.prototype.get$returnType = function() { return this.returnTyp e; }; 10028 FunctionDefinition.prototype.get$returnType = function() { return this.returnTyp e; };
9965 FunctionDefinition.prototype.set$returnType = function(value) { return this.retu rnType = value; }; 10029 FunctionDefinition.prototype.set$returnType = function(value) { return this.retu rnType = value; };
9966 FunctionDefinition.prototype.get$name = function() { return this.name; }; 10030 FunctionDefinition.prototype.get$name = function() { return this.name; };
9967 FunctionDefinition.prototype.set$name = function(value) { return this.name = val ue; }; 10031 FunctionDefinition.prototype.set$name = function(value) { return this.name = val ue; };
9968 FunctionDefinition.prototype.get$typeParameters = function() { return this.typeP arameters; };
9969 FunctionDefinition.prototype.set$typeParameters = function(value) { return this. typeParameters = value; };
9970 FunctionDefinition.prototype.get$initializers = function() { return this.initial izers; }; 10032 FunctionDefinition.prototype.get$initializers = function() { return this.initial izers; };
9971 FunctionDefinition.prototype.set$initializers = function(value) { return this.in itializers = value; }; 10033 FunctionDefinition.prototype.set$initializers = function(value) { return this.in itializers = value; };
9972 FunctionDefinition.prototype.get$nativeBody = function() { return this.nativeBod y; }; 10034 FunctionDefinition.prototype.get$nativeBody = function() { return this.nativeBod y; };
9973 FunctionDefinition.prototype.set$nativeBody = function(value) { return this.nati veBody = value; }; 10035 FunctionDefinition.prototype.set$nativeBody = function(value) { return this.nati veBody = value; };
9974 FunctionDefinition.prototype.get$body = function() { return this.body; }; 10036 FunctionDefinition.prototype.get$body = function() { return this.body; };
9975 FunctionDefinition.prototype.set$body = function(value) { return this.body = val ue; }; 10037 FunctionDefinition.prototype.set$body = function(value) { return this.body = val ue; };
9976 FunctionDefinition.prototype.visit = function(visitor) { 10038 FunctionDefinition.prototype.visit = function(visitor) {
9977 return visitor.visitFunctionDefinition(this); 10039 return visitor.visitFunctionDefinition(this);
9978 } 10040 }
9979 FunctionDefinition.prototype.visit$1 = FunctionDefinition.prototype.visit; 10041 FunctionDefinition.prototype.visit$1 = FunctionDefinition.prototype.visit;
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
10536 TypeReference.call(this, span); 10598 TypeReference.call(this, span);
10537 } 10599 }
10538 FunctionTypeReference.prototype.get$isFinal = function() { return this.isFinal; }; 10600 FunctionTypeReference.prototype.get$isFinal = function() { return this.isFinal; };
10539 FunctionTypeReference.prototype.set$isFinal = function(value) { return this.isFi nal = value; }; 10601 FunctionTypeReference.prototype.set$isFinal = function(value) { return this.isFi nal = value; };
10540 FunctionTypeReference.prototype.get$func = function() { return this.func; }; 10602 FunctionTypeReference.prototype.get$func = function() { return this.func; };
10541 FunctionTypeReference.prototype.set$func = function(value) { return this.func = value; }; 10603 FunctionTypeReference.prototype.set$func = function(value) { return this.func = value; };
10542 FunctionTypeReference.prototype.visit = function(visitor) { 10604 FunctionTypeReference.prototype.visit = function(visitor) {
10543 return visitor.visitFunctionTypeReference(this); 10605 return visitor.visitFunctionTypeReference(this);
10544 } 10606 }
10545 FunctionTypeReference.prototype.visit$1 = FunctionTypeReference.prototype.visit; 10607 FunctionTypeReference.prototype.visit$1 = FunctionTypeReference.prototype.visit;
10608 // ********** Code for DefaultTypeReference **************
10609 $inherits(DefaultTypeReference, TypeReference);
10610 function DefaultTypeReference(oldFactory, baseType, typeParameters, span) {
10611 this.oldFactory = oldFactory;
10612 this.baseType = baseType;
10613 this.typeParameters = typeParameters;
10614 // Initializers done
10615 TypeReference.call(this, span);
10616 }
10617 DefaultTypeReference.prototype.get$baseType = function() { return this.baseType; };
10618 DefaultTypeReference.prototype.set$baseType = function(value) { return this.base Type = value; };
10619 DefaultTypeReference.prototype.get$typeParameters = function() { return this.typ eParameters; };
10620 DefaultTypeReference.prototype.set$typeParameters = function(value) { return thi s.typeParameters = value; };
10621 DefaultTypeReference.prototype.visit = function(visitor) {
10622 return visitor.visitDefaultTypeReference(this);
10623 }
10624 DefaultTypeReference.prototype.visit$1 = DefaultTypeReference.prototype.visit;
10546 // ********** Code for ArgumentNode ************** 10625 // ********** Code for ArgumentNode **************
10547 $inherits(ArgumentNode, Node); 10626 $inherits(ArgumentNode, Node);
10548 function ArgumentNode(label, value, span) { 10627 function ArgumentNode(label, value, span) {
10549 this.label = label; 10628 this.label = label;
10550 this.value = value; 10629 this.value = value;
10551 // Initializers done 10630 // Initializers done
10552 Node.call(this, span); 10631 Node.call(this, span);
10553 } 10632 }
10554 ArgumentNode.prototype.get$label = function() { return this.label; }; 10633 ArgumentNode.prototype.get$label = function() { return this.label; };
10555 ArgumentNode.prototype.set$label = function(value) { return this.label = value; }; 10634 ArgumentNode.prototype.set$label = function(value) { return this.label = value; };
(...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after
11572 $globals.world.error(('class "' + this.name + '" has a cycle in its in heritance chain'), extendsTypeRef.get$span()); 11651 $globals.world.error(('class "' + this.name + '" has a cycle in its in heritance chain'), extendsTypeRef.get$span());
11573 } 11652 }
11574 } 11653 }
11575 else { 11654 else {
11576 if (!this.get$isObject()) { 11655 if (!this.get$isObject()) {
11577 this.set$parent($globals.world.objectType); 11656 this.set$parent($globals.world.objectType);
11578 this.get$parent().addDirectSubtype(this); 11657 this.get$parent().addDirectSubtype(this);
11579 } 11658 }
11580 } 11659 }
11581 this.interfaces = this._resolveInterfaces(typeDef.implementsTypes); 11660 this.interfaces = this._resolveInterfaces(typeDef.implementsTypes);
11582 if (typeDef.factoryType != null) { 11661 if (typeDef.defaultType != null) {
11583 $globals.world.error('factory not allowed on classes', typeDef.factoryTy pe.span); 11662 $globals.world.error('default not allowed on classes', typeDef.defaultTy pe.span);
11584 } 11663 }
11585 } 11664 }
11586 else { 11665 else {
11587 if (typeDef.implementsTypes != null && typeDef.implementsTypes.length > 0) { 11666 if (typeDef.implementsTypes != null && typeDef.implementsTypes.length > 0) {
11588 $globals.world.error('implements not allowed on interfaces (use extends) ', typeDef.implementsTypes.$index(0).get$span()); 11667 $globals.world.error('implements not allowed on interfaces (use extends) ', typeDef.implementsTypes.$index(0).get$span());
11589 } 11668 }
11590 this.interfaces = this._resolveInterfaces(typeDef.extendsTypes); 11669 this.interfaces = this._resolveInterfaces(typeDef.extendsTypes);
11591 var res = this._cycleInInterfaceExtends(); 11670 var res = this._cycleInInterfaceExtends();
11592 if (res >= 0) { 11671 if (res >= 0) {
11593 $globals.world.error(('interface "' + this.name + '" has a cycle in its inheritance chain'), typeDef.extendsTypes.$index(res).get$span()); 11672 $globals.world.error(('interface "' + this.name + '" has a cycle in its inheritance chain'), typeDef.extendsTypes.$index(res).get$span());
11594 } 11673 }
11595 if (typeDef.factoryType != null) { 11674 if (typeDef.defaultType != null) {
11596 this.factory_ = this.resolveType(typeDef.factoryType, true); 11675 this.defaultType = this.resolveType(typeDef.defaultType.baseType, true);
11597 if (this.factory_ == null) { 11676 if (this.defaultType == null) {
11598 $globals.world.warning('unresolved factory', typeDef.factoryType.span) ; 11677 $globals.world.warning('unresolved default class', typeDef.defaultType .span);
11678 }
11679 else {
11680 this.defaultType._resolveTypeParams(typeDef.defaultType.typeParameters );
11599 } 11681 }
11600 } 11682 }
11601 } 11683 }
11602 } 11684 }
11603 else if ((this.definition instanceof FunctionTypeDefinition)) { 11685 else if ((this.definition instanceof FunctionTypeDefinition)) {
11604 this.interfaces = [$globals.world.functionType]; 11686 this.interfaces = [$globals.world.functionType];
11605 } 11687 }
11606 if (this.typeParameters != null) { 11688 this._resolveTypeParams(this.typeParameters);
11607 var $$list = this.typeParameters;
11608 for (var $$i = 0;$$i < $$list.length; $$i++) {
11609 var tp = $$list.$index($$i);
11610 tp.set$enclosingElement(this);
11611 tp.resolve$0();
11612 }
11613 }
11614 if (this.get$isObject()) this._createNotEqualMember(); 11689 if (this.get$isObject()) this._createNotEqualMember();
11615 $globals.world._addType(this); 11690 $globals.world._addType(this);
11616 var $$list = this.constructors.getValues(); 11691 var $$list = this.constructors.getValues();
11617 for (var $$i = this.constructors.getValues().iterator$0(); $$i.hasNext$0(); ) { 11692 for (var $$i = this.constructors.getValues().iterator$0(); $$i.hasNext$0(); ) {
11618 var c = $$i.next$0(); 11693 var c = $$i.next$0();
11619 c.resolve$0(); 11694 c.resolve$0();
11620 } 11695 }
11621 var $list0 = this.members.getValues(); 11696 var $list0 = this.members.getValues();
11622 for (var $$i = this.members.getValues().iterator$0(); $$i.hasNext$0(); ) { 11697 for (var $$i = this.members.getValues().iterator$0(); $$i.hasNext$0(); ) {
11623 var m = $$i.next$0(); 11698 var m = $$i.next$0();
11624 m.resolve$0(); 11699 m.resolve$0();
11625 } 11700 }
11626 this.factories.forEach((function (f) { 11701 this.factories.forEach((function (f) {
11627 return f.resolve$0(); 11702 return f.resolve$0();
11628 }) 11703 })
11629 ); 11704 );
11630 if (this.get$isJsGlobalObject()) { 11705 if (this.get$isJsGlobalObject()) {
11631 var $list1 = this.members.getValues(); 11706 var $list1 = this.members.getValues();
11632 for (var $$i = this.members.getValues().iterator$0(); $$i.hasNext$0(); ) { 11707 for (var $$i = this.members.getValues().iterator$0(); $$i.hasNext$0(); ) {
11633 var m0 = $$i.next$0(); 11708 var m0 = $$i.next$0();
11634 if (!m0.get$isStatic()) $globals.world._addTopName(m0); 11709 if (!m0.get$isStatic()) $globals.world._addTopName(m0);
11635 } 11710 }
11636 } 11711 }
11637 } 11712 }
11713 DefinedType.prototype._resolveTypeParams = function(params) {
11714 if (params == null) return;
11715 for (var $$i = 0;$$i < params.length; $$i++) {
11716 var tp = params.$index($$i);
11717 tp.set$enclosingElement(this);
11718 tp.resolve$0();
11719 }
11720 }
11638 DefinedType.prototype.addMethod = function(methodName, definition) { 11721 DefinedType.prototype.addMethod = function(methodName, definition) {
11639 if (methodName == null) methodName = definition.name.name; 11722 if (methodName == null) methodName = definition.name.name;
11640 var method = new MethodMember(methodName, this, definition); 11723 var method = new MethodMember(methodName, this, definition);
11641 if (method.get$isConstructor()) { 11724 if (method.get$isConstructor()) {
11642 if (this.constructors.containsKey(method.get$constructorName())) { 11725 if (this.constructors.containsKey(method.get$constructorName())) {
11643 $globals.world.error(('duplicate constructor definition of ' + method.get$ name()), definition.span); 11726 $globals.world.error(('duplicate constructor definition of ' + method.get$ name()), definition.span);
11644 return; 11727 return;
11645 } 11728 }
11646 this.constructors.$setindex(method.get$constructorName(), method); 11729 this.constructors.$setindex(method.get$constructorName(), method);
11647 return; 11730 return;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
11709 if (ret != null) return ret; 11792 if (ret != null) return ret;
11710 ret = this.factories.getFactory(this.name, constructorName); 11793 ret = this.factories.getFactory(this.name, constructorName);
11711 if (ret != null) return ret; 11794 if (ret != null) return ret;
11712 ret = this.constructors.$index(constructorName); 11795 ret = this.constructors.$index(constructorName);
11713 if (ret != null) return ret; 11796 if (ret != null) return ret;
11714 return this._tryCreateDefaultConstructor(constructorName); 11797 return this._tryCreateDefaultConstructor(constructorName);
11715 } 11798 }
11716 DefinedType.prototype.getConstructor = function(constructorName) { 11799 DefinedType.prototype.getConstructor = function(constructorName) {
11717 var ret = this.constructors.$index(constructorName); 11800 var ret = this.constructors.$index(constructorName);
11718 if (ret != null) { 11801 if (ret != null) {
11719 if (this.factory_ != null) { 11802 if (this.defaultType != null) {
11720 return this.factory_.getFactory(this, constructorName); 11803 this._checkDefaultTypeParams();
11804 return this.defaultType.getFactory(this, constructorName);
11721 } 11805 }
11722 return ret; 11806 return ret;
11723 } 11807 }
11724 ret = this.factories.getFactory(this.name, constructorName); 11808 ret = this.factories.getFactory(this.name, constructorName);
11725 if (ret != null) return ret; 11809 if (ret != null) return ret;
11726 return this._tryCreateDefaultConstructor(constructorName); 11810 return this._tryCreateDefaultConstructor(constructorName);
11727 } 11811 }
11812 DefinedType.prototype._checkDefaultTypeParams = function() {
11813 function toList(list) {
11814 return (list != null ? list : const$128/*const []*/);
11815 }
11816 var typeDef = this.definition;
11817 if (typeDef.defaultType.oldFactory) {
11818 return;
11819 }
11820 var interfaceParams = toList(this.typeParameters);
11821 var defaultParams = toList(typeDef.defaultType.typeParameters);
11822 var classParams = toList(this.defaultType.typeParameters);
11823 if ($ne(interfaceParams.length, defaultParams.length) || $ne(defaultParams.len gth, classParams.length)) {
11824 $globals.world.error('"default" must have the same number of type parameters as the class and interface do'/*'"default" must have the same number of type pa rameters as '
11825 + 'the class and interface do'*/, this.get$span(), typeDef.default Type.span, this.defaultType.get$span());
11826 return;
11827 }
11828 for (var i = 0;
11829 i < interfaceParams.length; i++) {
11830 var ip = interfaceParams.$index(i);
11831 var dp = defaultParams.$index(i);
11832 var cp = classParams.$index(i);
11833 dp.resolve$0();
11834 if ($ne(ip.get$name(), dp.get$name()) || $ne(dp.get$name(), cp.get$name())) {
11835 $globals.world.error('default class must have the same type parameter name s as the class and interface'/*'default class must have the same type parameter names as '
11836 + 'the class and interface'*/, ip.get$span(), dp.get$span(), c p.get$span());
11837 }
11838 else if ($ne(dp.get$extendsType(), cp.get$extendsType())) {
11839 $globals.world.error('default class type parameters must have the same ext ends as the class does'/*'default class type parameters must have the same exten ds '
11840 + 'as the class does'*/, dp.get$span(), cp.get$span());
11841 }
11842 else if (!dp.get$extendsType().isSubtypeOf$1(ip.get$extendsType())) {
11843 $globals.world.warning('"default" can only have tighter type parameter "ex tends" than the interface'/*'"default" can only have tighter type parameter "ext ends"'
11844 + ' than the interface'*/, dp.get$span(), ip.get$span());
11845 }
11846 }
11847 }
11728 DefinedType.prototype._tryCreateDefaultConstructor = function(name) { 11848 DefinedType.prototype._tryCreateDefaultConstructor = function(name) {
11729 if (name == '' && this.definition != null && this.isClass && this.constructors .get$length() == 0) { 11849 if (name == '' && this.definition != null && this.isClass && this.constructors .get$length() == 0) {
11730 var span = this.definition.span; 11850 var span = this.definition.span;
11731 var inits = null, native_ = null, body = null; 11851 var inits = null, native_ = null, body = null;
11732 if (this.isNative) { 11852 if (this.isNative) {
11733 native_ = ''; 11853 native_ = '';
11734 inits = null; 11854 inits = null;
11735 } 11855 }
11736 else { 11856 else {
11737 body = null; 11857 body = null;
11738 inits = [new CallExpression(new SuperExpression(span), [], span)]; 11858 inits = [new CallExpression(new SuperExpression(span), [], span)];
11739 } 11859 }
11740 var typeDef = this.definition; 11860 var typeDef = this.definition;
11741 var c = new FunctionDefinition(null, null, typeDef.name, [], null, inits, na tive_, body, span); 11861 var c = new FunctionDefinition(null, null, typeDef.name, [], inits, native_, body, span);
11742 this.addMethod(null, c); 11862 this.addMethod(null, c);
11743 this.constructors.$index('').resolve$0(); 11863 this.constructors.$index('').resolve$0();
11744 return this.constructors.$index(''); 11864 return this.constructors.$index('');
11745 } 11865 }
11746 return null; 11866 return null;
11747 } 11867 }
11748 DefinedType.prototype.getMember = function(memberName) { 11868 DefinedType.prototype.getMember = function(memberName) {
11749 var member = this.members.$index(memberName); 11869 var member = this.members.$index(memberName);
11750 if (member != null) { 11870 if (member != null) {
11751 this._checkOverride(member); 11871 this._checkOverride(member);
(...skipping 1582 matching lines...) Expand 10 before | Expand all | Expand 10 after
13334 $inheritsMembers(_DoubleLinkedQueueEntrySentinel_E, DoubleLinkedQueueEntry_E); 13454 $inheritsMembers(_DoubleLinkedQueueEntrySentinel_E, DoubleLinkedQueueEntry_E);
13335 $inheritsMembers(_DoubleLinkedQueueEntrySentinel_KeyValuePair_K$V, DoubleLinkedQ ueueEntry_KeyValuePair_K$V); 13455 $inheritsMembers(_DoubleLinkedQueueEntrySentinel_KeyValuePair_K$V, DoubleLinkedQ ueueEntry_KeyValuePair_K$V);
13336 // ********** Globals ************** 13456 // ********** Globals **************
13337 function $static_init(){ 13457 function $static_init(){
13338 $globals._GREEN_COLOR = '\u001b[32m'; 13458 $globals._GREEN_COLOR = '\u001b[32m';
13339 $globals._MAGENTA_COLOR = '\u001b[35m'; 13459 $globals._MAGENTA_COLOR = '\u001b[35m';
13340 $globals._NO_COLOR = '\u001b[0m'; 13460 $globals._NO_COLOR = '\u001b[0m';
13341 $globals._RED_COLOR = '\u001b[31m'; 13461 $globals._RED_COLOR = '\u001b[31m';
13342 } 13462 }
13343 var const$0 = new EnvMap()/*const EnvMap()*/; 13463 var const$0 = new EnvMap()/*const EnvMap()*/;
13464 var const$127 = new IllegalAccessException()/*const IllegalAccessException()*/;
13465 var const$128 = ImmutableList.ImmutableList$from$factory([])/*const []*/;
13344 var const$2 = new EmptyQueueException()/*const EmptyQueueException()*/; 13466 var const$2 = new EmptyQueueException()/*const EmptyQueueException()*/;
13345 var const$3 = new _DeletedKeySentinel()/*const _DeletedKeySentinel()*/; 13467 var const$3 = new _DeletedKeySentinel()/*const _DeletedKeySentinel()*/;
13346 var const$8 = new NoMoreElementsException()/*const NoMoreElementsException()*/; 13468 var const$8 = new NoMoreElementsException()/*const NoMoreElementsException()*/;
13347 var $globals = {}; 13469 var $globals = {};
13348 $static_init(); 13470 $static_init();
13349 main(); 13471 main();
OLDNEW
« no previous file with comments | « frog/member.dart ('k') | frog/parser.dart » ('j') | frog/parser.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698