OLD | NEW |
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 function $throw(e) { | 4 function $throw(e) { |
5 // If e is not a value, we can use V8's captureStackTrace utility method. | 5 // If e is not a value, we can use V8's captureStackTrace utility method. |
6 // TODO(jmesserly): capture the stack trace on other JS engines. | 6 // TODO(jmesserly): capture the stack trace on other JS engines. |
7 if (e && (typeof e == 'object') && Error.captureStackTrace) { | 7 if (e && (typeof e == 'object') && Error.captureStackTrace) { |
8 // TODO(jmesserly): this will clobber the e.stack property | 8 // TODO(jmesserly): this will clobber the e.stack property |
9 Error.captureStackTrace(e, $throw); | 9 Error.captureStackTrace(e, $throw); |
10 } | 10 } |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 }, enumerable: false, configurable: true }); | 271 }, enumerable: false, configurable: true }); |
272 Object.defineProperty(Object.prototype, "namesInOrder$1", { value: function($0)
{ | 272 Object.defineProperty(Object.prototype, "namesInOrder$1", { value: function($0)
{ |
273 return this.noSuchMethod("namesInOrder", [$0]); | 273 return this.noSuchMethod("namesInOrder", [$0]); |
274 }, enumerable: false, configurable: true }); | 274 }, enumerable: false, configurable: true }); |
275 Object.defineProperty(Object.prototype, "needsConversion$1", { value: function($
0) { | 275 Object.defineProperty(Object.prototype, "needsConversion$1", { value: function($
0) { |
276 return this.noSuchMethod("needsConversion", [$0]); | 276 return this.noSuchMethod("needsConversion", [$0]); |
277 }, enumerable: false, configurable: true }); | 277 }, enumerable: false, configurable: true }); |
278 Object.defineProperty(Object.prototype, "next$0", { value: function() { | 278 Object.defineProperty(Object.prototype, "next$0", { value: function() { |
279 return this.noSuchMethod("next", []); | 279 return this.noSuchMethod("next", []); |
280 }, enumerable: false, configurable: true }); | 280 }, enumerable: false, configurable: true }); |
| 281 Object.defineProperty(Object.prototype, "postResolveChecks$0", { value: function
() { |
| 282 return this.noSuchMethod("postResolveChecks", []); |
| 283 }, enumerable: false, configurable: true }); |
281 Object.defineProperty(Object.prototype, "provideFieldSyntax$0", { value: functio
n() { | 284 Object.defineProperty(Object.prototype, "provideFieldSyntax$0", { value: functio
n() { |
282 return this.noSuchMethod("provideFieldSyntax", []); | 285 return this.noSuchMethod("provideFieldSyntax", []); |
283 }, enumerable: false, configurable: true }); | 286 }, enumerable: false, configurable: true }); |
284 Object.defineProperty(Object.prototype, "providePropertySyntax$0", { value: func
tion() { | 287 Object.defineProperty(Object.prototype, "providePropertySyntax$0", { value: func
tion() { |
285 return this.noSuchMethod("providePropertySyntax", []); | 288 return this.noSuchMethod("providePropertySyntax", []); |
286 }, enumerable: false, configurable: true }); | 289 }, enumerable: false, configurable: true }); |
287 Object.defineProperty(Object.prototype, "removeLast$0", { value: function() { | 290 Object.defineProperty(Object.prototype, "removeLast$0", { value: function() { |
288 return this.noSuchMethod("removeLast", []); | 291 return this.noSuchMethod("removeLast", []); |
289 }, enumerable: false, configurable: true }); | 292 }, enumerable: false, configurable: true }); |
290 Object.defineProperty(Object.prototype, "replaceFirst$2", { value: function($0,
$1) { | 293 Object.defineProperty(Object.prototype, "replaceFirst$2", { value: function($0,
$1) { |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 } | 500 } |
498 function _print(obj) { | 501 function _print(obj) { |
499 if (typeof console == 'object') { | 502 if (typeof console == 'object') { |
500 if (obj) obj = obj.toString(); | 503 if (obj) obj = obj.toString(); |
501 console.log(obj); | 504 console.log(obj); |
502 } else { | 505 } else { |
503 write(obj); | 506 write(obj); |
504 write('\n'); | 507 write('\n'); |
505 } | 508 } |
506 } | 509 } |
507 function _map(itemsAndKeys) { | |
508 var ret = new LinkedHashMapImplementation(); | |
509 for (var i = (0); | |
510 i < itemsAndKeys.get$length(); ) { | |
511 ret.$setindex(itemsAndKeys.$index(i++), itemsAndKeys.$index(i++)); | |
512 } | |
513 return ret; | |
514 } | |
515 function _toDartException(e) { | 510 function _toDartException(e) { |
516 function attachStack(dartEx) { | 511 function attachStack(dartEx) { |
517 // TODO(jmesserly): setting the stack property is not a long term solution. | 512 // TODO(jmesserly): setting the stack property is not a long term solution. |
518 var stack = e.stack; | 513 var stack = e.stack; |
519 // The stack contains the error message, and the stack is all that is | 514 // The stack contains the error message, and the stack is all that is |
520 // printed (the exception's toString() is never called). Make the Dart | 515 // printed (the exception's toString() is never called). Make the Dart |
521 // exception's toString() be the dominant message. | 516 // exception's toString() be the dominant message. |
522 if (typeof stack == 'string') { | 517 if (typeof stack == 'string') { |
523 var message = dartEx.toString(); | 518 var message = dartEx.toString(); |
524 if (/^(Type|Range)Error:/.test(stack)) { | 519 if (/^(Type|Range)Error:/.test(stack)) { |
(...skipping 1315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 return this; | 1835 return this; |
1841 } | 1836 } |
1842 | 1837 |
1843 // Note: using Function instead of 'eval' to get a clean scope. | 1838 // Note: using Function instead of 'eval' to get a clean scope. |
1844 // TODO(jmesserly): evaluate the performance of these stubs. | 1839 // TODO(jmesserly): evaluate the performance of these stubs. |
1845 var f = 'function(' + a.join(',') + '){return $f(' + p.join(',') + ');}'; | 1840 var f = 'function(' + a.join(',') + '){return $f(' + p.join(',') + ');}'; |
1846 return new Function('$f', 'return ' + f + '').call(null, this); | 1841 return new Function('$f', 'return ' + f + '').call(null, this); |
1847 | 1842 |
1848 } | 1843 } |
1849 // ********** Code for top level ************** | 1844 // ********** Code for top level ************** |
| 1845 function _map(itemsAndKeys) { |
| 1846 var ret = new LinkedHashMapImplementation(); |
| 1847 for (var i = (0); |
| 1848 i < itemsAndKeys.get$length(); ) { |
| 1849 ret.$setindex(itemsAndKeys.$index(i++), itemsAndKeys.$index(i++)); |
| 1850 } |
| 1851 return ret; |
| 1852 } |
1850 // ********** Library node ************** | 1853 // ********** Library node ************** |
1851 // ********** Code for Process ************** | 1854 // ********** Code for Process ************** |
1852 function Process(_process) { | 1855 function Process(_process) { |
1853 this.SIGSYS = "SIGSYS"; | 1856 this.SIGSYS = "SIGSYS"; |
1854 this.SIGALRM = "SIGALRM"; | 1857 this.SIGALRM = "SIGALRM"; |
1855 this.SIGXCPU = "SIGXCPU"; | 1858 this.SIGXCPU = "SIGXCPU"; |
1856 this.SIGTSTP = "SIGTSTP"; | 1859 this.SIGTSTP = "SIGTSTP"; |
1857 this.SIGSEGV = "SIGSEGV"; | 1860 this.SIGSEGV = "SIGSEGV"; |
1858 this.SIGQUIT = "SIGQUIT"; | 1861 this.SIGQUIT = "SIGQUIT"; |
1859 this.SIGABRT = "SIGABRT"; | 1862 this.SIGABRT = "SIGABRT"; |
(...skipping 2551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4411 } | 4414 } |
4412 for (var i = this.get$bareCount(); | 4415 for (var i = this.get$bareCount(); |
4413 i < this.get$length(); i++) { | 4416 i < this.get$length(); i++) { |
4414 var name = this.getName(i); | 4417 var name = this.getName(i); |
4415 if (name == null) name = ("$" + i); | 4418 if (name == null) name = ("$" + i); |
4416 result.add$1(new Value($globals.world.varType, name, null, false)); | 4419 result.add$1(new Value($globals.world.varType, name, null, false)); |
4417 } | 4420 } |
4418 return new Arguments(this.nodes, result); | 4421 return new Arguments(this.nodes, result); |
4419 } | 4422 } |
4420 // ********** Code for LibraryImport ************** | 4423 // ********** Code for LibraryImport ************** |
4421 function LibraryImport(library, prefix) { | 4424 function LibraryImport(library, prefix, span) { |
4422 this.library = library; | 4425 this.library = library; |
| 4426 this.span = span; |
4423 this.prefix = prefix; | 4427 this.prefix = prefix; |
4424 } | 4428 } |
4425 LibraryImport.prototype.get$prefix = function() { return this.prefix; }; | 4429 LibraryImport.prototype.get$prefix = function() { return this.prefix; }; |
4426 LibraryImport.prototype.set$prefix = function(value) { return this.prefix = valu
e; }; | |
4427 LibraryImport.prototype.get$library = function() { return this.library; }; | 4430 LibraryImport.prototype.get$library = function() { return this.library; }; |
4428 LibraryImport.prototype.set$library = function(value) { return this.library = va
lue; }; | 4431 LibraryImport.prototype.get$span = function() { return this.span; }; |
| 4432 // ********** Code for Member ************** |
| 4433 $inherits(Member, Element); |
| 4434 function Member(name, declaringType) { |
| 4435 this.isGenerated = false; |
| 4436 this.declaringType = declaringType; |
| 4437 this._provideFieldSyntax = false; |
| 4438 this._providePropertySyntax = false; |
| 4439 Element.call(this, name, declaringType); |
| 4440 } |
| 4441 Member.prototype.get$declaringType = function() { return this.declaringType; }; |
| 4442 Member.prototype.get$isGenerated = function() { return this.isGenerated; }; |
| 4443 Member.prototype.set$isGenerated = function(value) { return this.isGenerated = v
alue; }; |
| 4444 Member.prototype.get$generator = function() { return this.generator; }; |
| 4445 Member.prototype.set$generator = function(value) { return this.generator = value
; }; |
| 4446 Member.prototype.get$library = function() { |
| 4447 return this.declaringType.get$library(); |
| 4448 } |
| 4449 Member.prototype.get$isPrivate = function() { |
| 4450 return this.name != null && this.name.startsWith("_"); |
| 4451 } |
| 4452 Member.prototype.get$isConstructor = function() { |
| 4453 return false; |
| 4454 } |
| 4455 Member.prototype.get$isField = function() { |
| 4456 return false; |
| 4457 } |
| 4458 Member.prototype.get$isMethod = function() { |
| 4459 return false; |
| 4460 } |
| 4461 Member.prototype.get$isProperty = function() { |
| 4462 return false; |
| 4463 } |
| 4464 Member.prototype.get$isAbstract = function() { |
| 4465 return false; |
| 4466 } |
| 4467 Member.prototype.get$isFinal = function() { |
| 4468 return false; |
| 4469 } |
| 4470 Member.prototype.get$isConst = function() { |
| 4471 return false; |
| 4472 } |
| 4473 Member.prototype.get$isFactory = function() { |
| 4474 return false; |
| 4475 } |
| 4476 Member.prototype.get$isOperator = function() { |
| 4477 return this.name.startsWith(":"); |
| 4478 } |
| 4479 Member.prototype.get$isCallMethod = function() { |
| 4480 return this.name == ":call"; |
| 4481 } |
| 4482 Member.prototype.get$requiresPropertySyntax = function() { |
| 4483 return false; |
| 4484 } |
| 4485 Member.prototype.get$requiresFieldSyntax = function() { |
| 4486 return false; |
| 4487 } |
| 4488 Member.prototype.get$isNative = function() { |
| 4489 return false; |
| 4490 } |
| 4491 Member.prototype.get$constructorName = function() { |
| 4492 $globals.world.internalError("can not be a constructor", this.get$span()); |
| 4493 } |
| 4494 Member.prototype.provideFieldSyntax = function() { |
| 4495 |
| 4496 } |
| 4497 Member.prototype.providePropertySyntax = function() { |
| 4498 |
| 4499 } |
| 4500 Member.prototype.get$initDelegate = function() { |
| 4501 $globals.world.internalError("cannot have initializers", this.get$span()); |
| 4502 } |
| 4503 Member.prototype.set$initDelegate = function(ctor) { |
| 4504 $globals.world.internalError("cannot have initializers", this.get$span()); |
| 4505 } |
| 4506 Member.prototype.computeValue = function() { |
| 4507 $globals.world.internalError("cannot have value", this.get$span()); |
| 4508 } |
| 4509 Member.prototype.get$inferredResult = function() { |
| 4510 var t = this.get$returnType(); |
| 4511 if (t.get$isBool() && (this.get$library().get$isCore() || this.get$library().g
et$isCoreImpl())) { |
| 4512 return $globals.world.nonNullBool; |
| 4513 } |
| 4514 return t; |
| 4515 } |
| 4516 Member.prototype.get$definition = function() { |
| 4517 return null; |
| 4518 } |
| 4519 Member.prototype.get$parameters = function() { |
| 4520 return []; |
| 4521 } |
| 4522 Member.prototype.canInvoke = function(context, args) { |
| 4523 return this.get$canGet() && new Value(this.get$returnType(), null, null, true)
.canInvoke(context, ":call", args); |
| 4524 } |
| 4525 Member.prototype.invoke = function(context, node, target, args, isDynamic) { |
| 4526 var newTarget = this._get(context, node, target, isDynamic); |
| 4527 return newTarget.invoke$5(context, ":call", node, args, isDynamic); |
| 4528 } |
| 4529 Member.prototype.override = function(other) { |
| 4530 if (this.get$isStatic()) { |
| 4531 $globals.world.error("static members can not hide parent members", this.get$
span(), other.get$span()); |
| 4532 return false; |
| 4533 } |
| 4534 else if (other.get$isStatic()) { |
| 4535 $globals.world.error("can not override static member", this.get$span(), othe
r.get$span()); |
| 4536 return false; |
| 4537 } |
| 4538 return true; |
| 4539 } |
| 4540 Member.prototype.get$generatedFactoryName = function() { |
| 4541 var prefix = ("" + this.declaringType.get$jsname() + "." + this.get$constructo
rName() + "$"); |
| 4542 if (this.name == "") { |
| 4543 return ("" + prefix + "factory"); |
| 4544 } |
| 4545 else { |
| 4546 return ("" + prefix + this.name + "$factory"); |
| 4547 } |
| 4548 } |
| 4549 Member.prototype.hashCode = function() { |
| 4550 var typeCode = this.declaringType == null ? (1) : this.declaringType.hashCode(
); |
| 4551 var nameCode = this.get$isConstructor() ? this.get$constructorName().hashCode(
) : this.name.hashCode(); |
| 4552 return (typeCode << (4)) ^ nameCode; |
| 4553 } |
| 4554 Member.prototype.$eq = function(other) { |
| 4555 return (other instanceof Member) && $eq(this.get$isConstructor(), other.get$is
Constructor()) && $eq(this.declaringType, other.get$declaringType()) && (this.ge
t$isConstructor() ? this.get$constructorName() == other.get$constructorName() :
this.name == other.get$name()); |
| 4556 } |
| 4557 Member.prototype._get$3 = Member.prototype._get; |
| 4558 Member.prototype._get$3$isDynamic = Member.prototype._get; |
| 4559 Member.prototype._get$4 = Member.prototype._get; |
| 4560 Member.prototype._set$4 = Member.prototype._set; |
| 4561 Member.prototype._set$4$isDynamic = Member.prototype._set; |
| 4562 Member.prototype._set$5 = Member.prototype._set; |
| 4563 Member.prototype.canInvoke$2 = Member.prototype.canInvoke; |
| 4564 Member.prototype.computeValue$0 = Member.prototype.computeValue; |
| 4565 Member.prototype.hashCode$0 = Member.prototype.hashCode; |
| 4566 Member.prototype.invoke$4 = function($0, $1, $2, $3) { |
| 4567 return this.invoke($0, $1, $2, $3, false); |
| 4568 }; |
| 4569 Member.prototype.invoke$4$isDynamic = Member.prototype.invoke; |
| 4570 Member.prototype.invoke$5 = Member.prototype.invoke; |
| 4571 Member.prototype.provideFieldSyntax$0 = Member.prototype.provideFieldSyntax; |
| 4572 Member.prototype.providePropertySyntax$0 = Member.prototype.providePropertySynta
x; |
| 4573 // ********** Code for AmbiguousMember ************** |
| 4574 $inherits(AmbiguousMember, Member); |
| 4575 function AmbiguousMember(name, members) { |
| 4576 this.members = members; |
| 4577 Member.call(this, name, null); |
| 4578 } |
| 4579 AmbiguousMember.prototype.get$members = function() { return this.members; }; |
| 4580 AmbiguousMember.prototype.set$members = function(value) { return this.members =
value; }; |
4429 // ********** Code for Library ************** | 4581 // ********** Code for Library ************** |
4430 $inherits(Library, Element); | 4582 $inherits(Library, Element); |
4431 function Library(baseSource) { | 4583 function Library(baseSource) { |
4432 this.baseSource = baseSource; | 4584 this.baseSource = baseSource; |
4433 this.isWritten = false; | 4585 this.isWritten = false; |
4434 Element.call(this, null, null); | 4586 Element.call(this, null, null); |
4435 this.sourceDir = dirname(this.baseSource.filename); | 4587 this.sourceDir = dirname(this.baseSource.filename); |
4436 this.topType = new DefinedType(null, this, null, true); | 4588 this.topType = new DefinedType(null, this, null, true); |
4437 this.types = _map(["", this.topType]); | 4589 this.types = _map(["", this.topType]); |
4438 this.imports = []; | 4590 this.imports = []; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4470 Library.prototype.get$span = function() { | 4622 Library.prototype.get$span = function() { |
4471 return new SourceSpan(this.baseSource, (0), (0)); | 4623 return new SourceSpan(this.baseSource, (0), (0)); |
4472 } | 4624 } |
4473 Library.prototype.makeFullPath = function(filename) { | 4625 Library.prototype.makeFullPath = function(filename) { |
4474 if (filename.startsWith("dart:")) return filename; | 4626 if (filename.startsWith("dart:")) return filename; |
4475 if (filename.startsWith("/")) return filename; | 4627 if (filename.startsWith("/")) return filename; |
4476 if (filename.startsWith("file:///")) return filename; | 4628 if (filename.startsWith("file:///")) return filename; |
4477 if (filename.startsWith("http://")) return filename; | 4629 if (filename.startsWith("http://")) return filename; |
4478 return joinPaths(this.sourceDir, filename); | 4630 return joinPaths(this.sourceDir, filename); |
4479 } | 4631 } |
4480 Library.prototype.addImport = function(fullname, prefix) { | 4632 Library.prototype.addImport = function(fullname, prefix, span) { |
4481 var newLib = $globals.world.getOrAddLibrary(fullname); | 4633 var newLib = $globals.world.getOrAddLibrary(fullname); |
4482 this.imports.add(new LibraryImport(newLib, prefix)); | 4634 if (newLib.get$isCore()) return; |
| 4635 this.imports.add(new LibraryImport(newLib, prefix, span)); |
4483 return newLib; | 4636 return newLib; |
4484 } | 4637 } |
4485 Library.prototype.addNative = function(fullname) { | 4638 Library.prototype.addNative = function(fullname) { |
4486 this.natives.add($globals.world.reader.readFile(fullname)); | 4639 this.natives.add($globals.world.reader.readFile(fullname)); |
4487 } | 4640 } |
4488 Library.prototype._findMembers = function(name) { | 4641 Library.prototype._findMembers = function(name) { |
4489 if (name.startsWith("_")) { | 4642 if (name.startsWith("_")) { |
4490 return this._privateMembers.$index(name); | 4643 return this._privateMembers.$index(name); |
4491 } | 4644 } |
4492 else { | 4645 else { |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4607 return n.get$name(); | 4760 return n.get$name(); |
4608 }) | 4761 }) |
4609 ); | 4762 ); |
4610 return type.name.name + "." + Strings.join(names, "."); | 4763 return type.name.name + "." + Strings.join(names, "."); |
4611 } | 4764 } |
4612 else { | 4765 else { |
4613 return type.name.name; | 4766 return type.name.name; |
4614 } | 4767 } |
4615 } | 4768 } |
4616 Library.prototype.lookup = function(name, span) { | 4769 Library.prototype.lookup = function(name, span) { |
4617 var retType = this.findTypeByName(name); | 4770 return this._topNames.$index(name); |
4618 var ret = null; | |
4619 if (retType != null) { | |
4620 ret = retType.get$typeMember(); | |
4621 } | |
4622 var newRet = this.topType.getMember(name); | |
4623 if (newRet != null) { | |
4624 if (ret != null && $ne(ret, newRet)) { | |
4625 $globals.world.error(("conflicting members for \"" + name + "\""), span, r
et.get$span(), newRet.get$span()); | |
4626 } | |
4627 else { | |
4628 ret = newRet; | |
4629 } | |
4630 } | |
4631 var $$list = this.imports; | |
4632 for (var $$i = 0;$$i < $$list.get$length(); $$i++) { | |
4633 var imported = $$list.$index($$i); | |
4634 if (imported.get$prefix() == null) { | |
4635 newRet = imported.get$library().get$topType().getMember$1(name); | |
4636 if (newRet != null) { | |
4637 if (ret != null && $ne(ret, newRet)) { | |
4638 $globals.world.error(("conflicting members for \"" + name + "\""), spa
n, ret.get$span(), newRet.get$span()); | |
4639 } | |
4640 else { | |
4641 ret = newRet; | |
4642 } | |
4643 } | |
4644 } | |
4645 } | |
4646 return ret; | |
4647 } | 4771 } |
4648 Library.prototype.resolve = function() { | 4772 Library.prototype.resolve = function() { |
4649 if (this.name == null) { | 4773 if (this.name == null) { |
4650 this.name = this.baseSource.filename; | 4774 this.name = this.baseSource.filename; |
4651 var index = this.name.lastIndexOf("/", this.name.length); | 4775 var index = this.name.lastIndexOf("/", this.name.length); |
4652 if (index >= (0)) { | 4776 if (index >= (0)) { |
4653 this.name = this.name.substring(index + (1)); | 4777 this.name = this.name.substring(index + (1)); |
4654 } | 4778 } |
4655 index = this.name.indexOf("."); | 4779 index = this.name.indexOf("."); |
4656 if (index > (0)) { | 4780 if (index > (0)) { |
4657 this.name = this.name.substring((0), index); | 4781 this.name = this.name.substring((0), index); |
4658 } | 4782 } |
4659 } | 4783 } |
4660 this._jsname = this.name.replaceAll(".", "_").replaceAll(":", "_").replaceAll(
" ", "_"); | 4784 this._jsname = this.name.replaceAll(".", "_").replaceAll(":", "_").replaceAll(
" ", "_"); |
4661 var $$list = this.types.getValues(); | 4785 var $$list = this.types.getValues(); |
4662 for (var $$i = this.types.getValues().iterator$0(); $$i.hasNext$0(); ) { | 4786 for (var $$i = this.types.getValues().iterator$0(); $$i.hasNext$0(); ) { |
4663 var type = $$i.next$0(); | 4787 var type = $$i.next$0(); |
4664 type.resolve$0(); | 4788 type.resolve$0(); |
4665 } | 4789 } |
4666 } | 4790 } |
| 4791 Library.prototype._addTopName = function(name, member, localSpan) { |
| 4792 var existing = this._topNames.$index(name); |
| 4793 if (existing == null) { |
| 4794 this._topNames.$setindex(name, member); |
| 4795 } |
| 4796 else { |
| 4797 if ((existing instanceof AmbiguousMember)) { |
| 4798 existing.get$members().add$1(member); |
| 4799 } |
| 4800 else { |
| 4801 var newMember = new AmbiguousMember(name, [existing, member]); |
| 4802 $globals.world.error(("conflicting members for \"" + name + "\""), existin
g.get$span(), member.get$span(), localSpan); |
| 4803 this._topNames.$setindex(name, newMember); |
| 4804 } |
| 4805 } |
| 4806 } |
| 4807 Library.prototype._addTopNames = function(lib) { |
| 4808 var $$list = lib.topType.members.getValues(); |
| 4809 for (var $$i = lib.topType.members.getValues().iterator$0(); $$i.hasNext$0();
) { |
| 4810 var member = $$i.next$0(); |
| 4811 if (member.get$isPrivate() && $ne(lib, this)) continue; |
| 4812 this._addTopName(member.get$name(), member); |
| 4813 } |
| 4814 var $$list = lib.types.getValues(); |
| 4815 for (var $$i = lib.types.getValues().iterator$0(); $$i.hasNext$0(); ) { |
| 4816 var type = $$i.next$0(); |
| 4817 if (!type.get$isTop()) { |
| 4818 if ($ne(lib, this) && type.get$typeMember().get$isPrivate()) continue; |
| 4819 this._addTopName(type.get$name(), type.get$typeMember()); |
| 4820 } |
| 4821 } |
| 4822 } |
| 4823 Library.prototype.postResolveChecks = function() { |
| 4824 this._topNames = new HashMapImplementation(); |
| 4825 this._addTopNames(this); |
| 4826 var $$list = this.imports; |
| 4827 for (var $$i = 0;$$i < $$list.get$length(); $$i++) { |
| 4828 var imported = $$list.$index($$i); |
| 4829 if (imported.get$prefix() == null) { |
| 4830 this._addTopNames(imported.get$library()); |
| 4831 } |
| 4832 else { |
| 4833 this._addTopName(imported.get$prefix(), imported.get$library().get$topType
().get$typeMember(), imported.get$span()); |
| 4834 } |
| 4835 } |
| 4836 } |
4667 Library.prototype.visitSources = function() { | 4837 Library.prototype.visitSources = function() { |
4668 var visitor = new _LibraryVisitor(this); | 4838 var visitor = new _LibraryVisitor(this); |
4669 visitor.addSource$1(this.baseSource); | 4839 visitor.addSource$1(this.baseSource); |
4670 } | 4840 } |
4671 Library.prototype.toString = function() { | 4841 Library.prototype.toString = function() { |
4672 return this.baseSource.filename; | 4842 return this.baseSource.filename; |
4673 } | 4843 } |
4674 Library.prototype.hashCode = function() { | 4844 Library.prototype.hashCode = function() { |
4675 return this.baseSource.filename.hashCode(); | 4845 return this.baseSource.filename.hashCode(); |
4676 } | 4846 } |
4677 Library.prototype.$eq = function(other) { | 4847 Library.prototype.$eq = function(other) { |
4678 return (other instanceof Library) && $eq(other.get$baseSource().get$filename()
, this.baseSource.filename); | 4848 return (other instanceof Library) && $eq(other.get$baseSource().get$filename()
, this.baseSource.filename); |
4679 } | 4849 } |
4680 Library.prototype.findTypeByName$1 = Library.prototype.findTypeByName; | 4850 Library.prototype.findTypeByName$1 = Library.prototype.findTypeByName; |
4681 Library.prototype.hashCode$0 = Library.prototype.hashCode; | 4851 Library.prototype.hashCode$0 = Library.prototype.hashCode; |
| 4852 Library.prototype.postResolveChecks$0 = Library.prototype.postResolveChecks; |
4682 Library.prototype.resolve$0 = Library.prototype.resolve; | 4853 Library.prototype.resolve$0 = Library.prototype.resolve; |
4683 Library.prototype.toString$0 = Library.prototype.toString; | 4854 Library.prototype.toString$0 = Library.prototype.toString; |
4684 Library.prototype.visitSources$0 = Library.prototype.visitSources; | 4855 Library.prototype.visitSources$0 = Library.prototype.visitSources; |
4685 // ********** Code for _LibraryVisitor ************** | 4856 // ********** Code for _LibraryVisitor ************** |
4686 function _LibraryVisitor(library) { | 4857 function _LibraryVisitor(library) { |
4687 this.library = library; | 4858 this.library = library; |
4688 this.isTop = true; | 4859 this.isTop = true; |
4689 this.seenSource = false; | 4860 this.seenSource = false; |
4690 this.seenResource = false; | 4861 this.seenResource = false; |
4691 this.seenImport = false; | 4862 this.seenImport = false; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4775 } | 4946 } |
4776 if ($eq(prefix, "")) prefix = null; | 4947 if ($eq(prefix, "")) prefix = null; |
4777 var filename = this.library.makeFullPath(name); | 4948 var filename = this.library.makeFullPath(name); |
4778 if (this.library.imports.some((function (li) { | 4949 if (this.library.imports.some((function (li) { |
4779 return $eq(li.get$library().get$baseSource(), filename); | 4950 return $eq(li.get$library().get$baseSource(), filename); |
4780 }) | 4951 }) |
4781 )) { | 4952 )) { |
4782 $globals.world.error(("duplicate import of \"" + name + "\""), node.span
); | 4953 $globals.world.error(("duplicate import of \"" + name + "\""), node.span
); |
4783 return; | 4954 return; |
4784 } | 4955 } |
4785 var newLib = this.library.addImport(filename, prefix); | 4956 var newLib = this.library.addImport(filename, prefix, node.span); |
4786 break; | 4957 break; |
4787 | 4958 |
4788 case "source": | 4959 case "source": |
4789 | 4960 |
4790 this.seenSource = true; | 4961 this.seenSource = true; |
4791 name = this.getSingleStringArg(node); | 4962 name = this.getSingleStringArg(node); |
4792 this.addSourceFromName(name, node.span); | 4963 this.addSourceFromName(name, node.span); |
4793 if (this.seenResource) { | 4964 if (this.seenResource) { |
4794 $globals.world.error("#sources must come before any #resource", node.spa
n); | 4965 $globals.world.error("#sources must come before any #resource", node.spa
n); |
4795 } | 4966 } |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4933 } | 5104 } |
4934 Parameter.prototype.get$isOptional = function() { | 5105 Parameter.prototype.get$isOptional = function() { |
4935 return this.definition != null && this.definition.value != null; | 5106 return this.definition != null && this.definition.value != null; |
4936 } | 5107 } |
4937 Parameter.prototype.get$hasDefaultValue = function() { | 5108 Parameter.prototype.get$hasDefaultValue = function() { |
4938 return this.definition.value.span.start != this.definition.span.start; | 5109 return this.definition.value.span.start != this.definition.span.start; |
4939 } | 5110 } |
4940 Parameter.prototype.copyWithNewType$2 = Parameter.prototype.copyWithNewType; | 5111 Parameter.prototype.copyWithNewType$2 = Parameter.prototype.copyWithNewType; |
4941 Parameter.prototype.genValue$2 = Parameter.prototype.genValue; | 5112 Parameter.prototype.genValue$2 = Parameter.prototype.genValue; |
4942 Parameter.prototype.resolve$0 = Parameter.prototype.resolve; | 5113 Parameter.prototype.resolve$0 = Parameter.prototype.resolve; |
4943 // ********** Code for Member ************** | |
4944 $inherits(Member, Element); | |
4945 function Member(name, declaringType) { | |
4946 this.isGenerated = false; | |
4947 this.declaringType = declaringType; | |
4948 this._provideFieldSyntax = false; | |
4949 this._providePropertySyntax = false; | |
4950 Element.call(this, name, declaringType); | |
4951 } | |
4952 Member.prototype.get$declaringType = function() { return this.declaringType; }; | |
4953 Member.prototype.get$isGenerated = function() { return this.isGenerated; }; | |
4954 Member.prototype.set$isGenerated = function(value) { return this.isGenerated = v
alue; }; | |
4955 Member.prototype.get$generator = function() { return this.generator; }; | |
4956 Member.prototype.set$generator = function(value) { return this.generator = value
; }; | |
4957 Member.prototype.get$library = function() { | |
4958 return this.declaringType.get$library(); | |
4959 } | |
4960 Member.prototype.get$isPrivate = function() { | |
4961 return this.name.startsWith("_"); | |
4962 } | |
4963 Member.prototype.get$isConstructor = function() { | |
4964 return false; | |
4965 } | |
4966 Member.prototype.get$isField = function() { | |
4967 return false; | |
4968 } | |
4969 Member.prototype.get$isMethod = function() { | |
4970 return false; | |
4971 } | |
4972 Member.prototype.get$isProperty = function() { | |
4973 return false; | |
4974 } | |
4975 Member.prototype.get$isAbstract = function() { | |
4976 return false; | |
4977 } | |
4978 Member.prototype.get$isFinal = function() { | |
4979 return false; | |
4980 } | |
4981 Member.prototype.get$isConst = function() { | |
4982 return false; | |
4983 } | |
4984 Member.prototype.get$isFactory = function() { | |
4985 return false; | |
4986 } | |
4987 Member.prototype.get$isOperator = function() { | |
4988 return this.name.startsWith(":"); | |
4989 } | |
4990 Member.prototype.get$isCallMethod = function() { | |
4991 return this.name == ":call"; | |
4992 } | |
4993 Member.prototype.get$requiresPropertySyntax = function() { | |
4994 return false; | |
4995 } | |
4996 Member.prototype.get$requiresFieldSyntax = function() { | |
4997 return false; | |
4998 } | |
4999 Member.prototype.get$isNative = function() { | |
5000 return false; | |
5001 } | |
5002 Member.prototype.get$constructorName = function() { | |
5003 $globals.world.internalError("can not be a constructor", this.get$span()); | |
5004 } | |
5005 Member.prototype.provideFieldSyntax = function() { | |
5006 | |
5007 } | |
5008 Member.prototype.providePropertySyntax = function() { | |
5009 | |
5010 } | |
5011 Member.prototype.get$initDelegate = function() { | |
5012 $globals.world.internalError("cannot have initializers", this.get$span()); | |
5013 } | |
5014 Member.prototype.set$initDelegate = function(ctor) { | |
5015 $globals.world.internalError("cannot have initializers", this.get$span()); | |
5016 } | |
5017 Member.prototype.computeValue = function() { | |
5018 $globals.world.internalError("cannot have value", this.get$span()); | |
5019 } | |
5020 Member.prototype.get$inferredResult = function() { | |
5021 var t = this.get$returnType(); | |
5022 if (t.get$isBool() && (this.get$library().get$isCore() || this.get$library().g
et$isCoreImpl())) { | |
5023 return $globals.world.nonNullBool; | |
5024 } | |
5025 return t; | |
5026 } | |
5027 Member.prototype.get$definition = function() { | |
5028 return null; | |
5029 } | |
5030 Member.prototype.get$parameters = function() { | |
5031 return []; | |
5032 } | |
5033 Member.prototype.canInvoke = function(context, args) { | |
5034 return this.get$canGet() && new Value(this.get$returnType(), null, null, true)
.canInvoke(context, ":call", args); | |
5035 } | |
5036 Member.prototype.invoke = function(context, node, target, args, isDynamic) { | |
5037 var newTarget = this._get(context, node, target, isDynamic); | |
5038 return newTarget.invoke$5(context, ":call", node, args, isDynamic); | |
5039 } | |
5040 Member.prototype.override = function(other) { | |
5041 if (this.get$isStatic()) { | |
5042 $globals.world.error("static members can not hide parent members", this.get$
span(), other.get$span()); | |
5043 return false; | |
5044 } | |
5045 else if (other.get$isStatic()) { | |
5046 $globals.world.error("can not override static member", this.get$span(), othe
r.get$span()); | |
5047 return false; | |
5048 } | |
5049 return true; | |
5050 } | |
5051 Member.prototype.get$generatedFactoryName = function() { | |
5052 var prefix = ("" + this.declaringType.get$jsname() + "." + this.get$constructo
rName() + "$"); | |
5053 if (this.name == "") { | |
5054 return ("" + prefix + "factory"); | |
5055 } | |
5056 else { | |
5057 return ("" + prefix + this.name + "$factory"); | |
5058 } | |
5059 } | |
5060 Member.prototype.hashCode = function() { | |
5061 var typeCode = this.declaringType == null ? (1) : this.declaringType.hashCode(
); | |
5062 var nameCode = this.get$isConstructor() ? this.get$constructorName().hashCode(
) : this.name.hashCode(); | |
5063 return (typeCode << (4)) ^ nameCode; | |
5064 } | |
5065 Member.prototype.$eq = function(other) { | |
5066 return (other instanceof Member) && $eq(this.get$isConstructor(), other.get$is
Constructor()) && $eq(this.declaringType, other.get$declaringType()) && (this.ge
t$isConstructor() ? this.get$constructorName() == other.get$constructorName() :
this.name == other.get$name()); | |
5067 } | |
5068 Member.prototype._get$3 = Member.prototype._get; | |
5069 Member.prototype._get$3$isDynamic = Member.prototype._get; | |
5070 Member.prototype._get$4 = Member.prototype._get; | |
5071 Member.prototype._set$4 = Member.prototype._set; | |
5072 Member.prototype._set$4$isDynamic = Member.prototype._set; | |
5073 Member.prototype._set$5 = Member.prototype._set; | |
5074 Member.prototype.canInvoke$2 = Member.prototype.canInvoke; | |
5075 Member.prototype.computeValue$0 = Member.prototype.computeValue; | |
5076 Member.prototype.hashCode$0 = Member.prototype.hashCode; | |
5077 Member.prototype.invoke$4 = function($0, $1, $2, $3) { | |
5078 return this.invoke($0, $1, $2, $3, false); | |
5079 }; | |
5080 Member.prototype.invoke$4$isDynamic = Member.prototype.invoke; | |
5081 Member.prototype.invoke$5 = Member.prototype.invoke; | |
5082 Member.prototype.provideFieldSyntax$0 = Member.prototype.provideFieldSyntax; | |
5083 Member.prototype.providePropertySyntax$0 = Member.prototype.providePropertySynta
x; | |
5084 // ********** Code for TypeMember ************** | 5114 // ********** Code for TypeMember ************** |
5085 $inherits(TypeMember, Member); | 5115 $inherits(TypeMember, Member); |
5086 function TypeMember(type) { | 5116 function TypeMember(type) { |
5087 this.type = type; | 5117 this.type = type; |
5088 Member.call(this, type.name, type.library.topType); | 5118 Member.call(this, type.name, type.library.topType); |
5089 } | 5119 } |
5090 TypeMember.prototype.get$type = function() { return this.type; }; | 5120 TypeMember.prototype.get$type = function() { return this.type; }; |
5091 TypeMember.prototype.get$span = function() { | 5121 TypeMember.prototype.get$span = function() { |
5092 return this.type.definition.span; | 5122 return this.type.definition == null ? null : this.type.definition.span; |
5093 } | 5123 } |
5094 TypeMember.prototype.get$isStatic = function() { | 5124 TypeMember.prototype.get$isStatic = function() { |
5095 return true; | 5125 return true; |
5096 } | 5126 } |
5097 TypeMember.prototype.get$returnType = function() { | 5127 TypeMember.prototype.get$returnType = function() { |
5098 return $globals.world.varType; | 5128 return $globals.world.varType; |
5099 } | 5129 } |
5100 TypeMember.prototype.canInvoke = function(context, args) { | 5130 TypeMember.prototype.canInvoke = function(context, args) { |
5101 return false; | 5131 return false; |
5102 } | 5132 } |
(...skipping 7806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12909 ListValue.prototype.binop$4 = ListValue.prototype.binop; | 12939 ListValue.prototype.binop$4 = ListValue.prototype.binop; |
12910 ListValue.prototype.getGlobalValue$0 = ListValue.prototype.getGlobalValue; | 12940 ListValue.prototype.getGlobalValue$0 = ListValue.prototype.getGlobalValue; |
12911 // ********** Code for MapValue ************** | 12941 // ********** Code for MapValue ************** |
12912 $inherits(MapValue, EvaluatedValue); | 12942 $inherits(MapValue, EvaluatedValue); |
12913 function MapValue(values, isConst, type, span) { | 12943 function MapValue(values, isConst, type, span) { |
12914 this.values = values; | 12944 this.values = values; |
12915 EvaluatedValue.call(this, isConst, type, span); | 12945 EvaluatedValue.call(this, isConst, type, span); |
12916 } | 12946 } |
12917 MapValue.prototype.get$code = function() { | 12947 MapValue.prototype.get$code = function() { |
12918 var items = new ListValue(this.values, false, $globals.world.listType, this.sp
an); | 12948 var items = new ListValue(this.values, false, $globals.world.listType, this.sp
an); |
12919 var tp = $globals.world.corelib.topType; | 12949 var tp = $globals.world.coreimpl.topType; |
12920 var f = this.isConst ? tp.getMember$1("_constMap") : tp.getMember$1("_map"); | 12950 var f = this.isConst ? tp.getMember$1("_constMap") : tp.getMember$1("_map"); |
12921 var value = f.invoke(null, null, new Value.type$ctor(tp, null), new Arguments(
null, [items]), false); | 12951 var value = f.invoke(null, null, new Value.type$ctor(tp, null), new Arguments(
null, [items]), false); |
12922 return value.get$code(); | 12952 return value.get$code(); |
12923 } | 12953 } |
12924 MapValue.prototype.getGlobalValue = function() { | 12954 MapValue.prototype.getGlobalValue = function() { |
12925 return $globals.world.gen.globalForConst(this, this.values); | 12955 return $globals.world.gen.globalForConst(this, this.values); |
12926 } | 12956 } |
12927 MapValue.prototype.binop = function(kind, other, context, node) { | 12957 MapValue.prototype.binop = function(kind, other, context, node) { |
12928 if (!(other instanceof MapValue)) return Value.prototype.binop.call(this, kind
, other, context, node); | 12958 if (!(other instanceof MapValue)) return Value.prototype.binop.call(this, kind
, other, context, node); |
12929 switch (kind) { | 12959 switch (kind) { |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13370 var library = this.getOrAddLibrary(script); | 13400 var library = this.getOrAddLibrary(script); |
13371 this.process(); | 13401 this.process(); |
13372 return library; | 13402 return library; |
13373 } | 13403 } |
13374 World.prototype.resolveAll = function() { | 13404 World.prototype.resolveAll = function() { |
13375 var $$list = this.libraries.getValues(); | 13405 var $$list = this.libraries.getValues(); |
13376 for (var $$i = this.libraries.getValues().iterator$0(); $$i.hasNext$0(); ) { | 13406 for (var $$i = this.libraries.getValues().iterator$0(); $$i.hasNext$0(); ) { |
13377 var lib = $$i.next$0(); | 13407 var lib = $$i.next$0(); |
13378 lib.resolve$0(); | 13408 lib.resolve$0(); |
13379 } | 13409 } |
| 13410 var $$list = this.libraries.getValues(); |
| 13411 for (var $$i = this.libraries.getValues().iterator$0(); $$i.hasNext$0(); ) { |
| 13412 var lib = $$i.next$0(); |
| 13413 lib.postResolveChecks$0(); |
| 13414 } |
13380 } | 13415 } |
13381 World.prototype.get$resolveAll = function() { | 13416 World.prototype.get$resolveAll = function() { |
13382 return this.resolveAll.bind(this); | 13417 return this.resolveAll.bind(this); |
13383 } | 13418 } |
13384 World.prototype.findMainMethod = function(lib) { | 13419 World.prototype.findMainMethod = function(lib) { |
13385 var mainMembers = lib.topType.resolveMember("main"); | 13420 var mainMembers = lib.topType.resolveMember("main"); |
13386 var main = null; | 13421 var main = null; |
13387 if (mainMembers == null || $eq(mainMembers.get$members().get$length(), (0))) { | 13422 if (mainMembers == null || $eq(mainMembers.get$members().get$length(), (0))) { |
13388 this.fatal("no main method specified"); | 13423 this.fatal("no main method specified"); |
13389 } | 13424 } |
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13975 $globals._RED_COLOR = "\x1b[31m"; | 14010 $globals._RED_COLOR = "\x1b[31m"; |
13976 } | 14011 } |
13977 var const$0000 = Object.create(EmptyQueueException.prototype, {}); | 14012 var const$0000 = Object.create(EmptyQueueException.prototype, {}); |
13978 var const$0001 = Object.create(_DeletedKeySentinel.prototype, {}); | 14013 var const$0001 = Object.create(_DeletedKeySentinel.prototype, {}); |
13979 var const$0005 = Object.create(NoMoreElementsException.prototype, {}); | 14014 var const$0005 = Object.create(NoMoreElementsException.prototype, {}); |
13980 var const$0007 = Object.create(IllegalAccessException.prototype, {}); | 14015 var const$0007 = Object.create(IllegalAccessException.prototype, {}); |
13981 var const$0008 = ImmutableList.ImmutableList$from$factory([]); | 14016 var const$0008 = ImmutableList.ImmutableList$from$factory([]); |
13982 var $globals = {}; | 14017 var $globals = {}; |
13983 $static_init(); | 14018 $static_init(); |
13984 main(); | 14019 main(); |
OLD | NEW |