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

Side by Side Diff: frog/frogsh

Issue 8483005: better property overriding field (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 9 years, 1 month 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
« no previous file with comments | « no previous file | frog/member.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env node 1 #!/usr/bin/env node
2 // ********** Library dart:core ************** 2 // ********** Library dart:core **************
3 // ********** Natives core.js ************** 3 // ********** Natives core.js **************
4 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 4 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
5 // for details. All rights reserved. Use of this source code is governed by a 5 // for details. All rights reserved. Use of this source code is governed by a
6 // BSD-style license that can be found in the LICENSE file. 6 // BSD-style license that can be found in the LICENSE file.
7 7
8 // TODO(jimhug): Completeness - see tests/corelib 8 // TODO(jimhug): Completeness - see tests/corelib
9 9
10 /** Implements extends for dart classes on javascript prototypes. */ 10 /** Implements extends for dart classes on javascript prototypes. */
(...skipping 10926 matching lines...) Expand 10 before | Expand all | Expand 10 after
10937 PropertyMember.prototype.get$isProperty = function() { 10937 PropertyMember.prototype.get$isProperty = function() {
10938 return true; 10938 return true;
10939 } 10939 }
10940 PropertyMember.prototype.get$returnType = function() { 10940 PropertyMember.prototype.get$returnType = function() {
10941 return $notnull_bool(this.getter == null) ? this.setter.returnType : this.gett er.returnType; 10941 return $notnull_bool(this.getter == null) ? this.setter.returnType : this.gett er.returnType;
10942 } 10942 }
10943 PropertyMember.prototype.override = function(other) { 10943 PropertyMember.prototype.override = function(other) {
10944 if ($notnull_bool(!$notnull_bool(Member.prototype.override.call(this, other))) ) return false; 10944 if ($notnull_bool(!$notnull_bool(Member.prototype.override.call(this, other))) ) return false;
10945 if ($notnull_bool(other.get$isProperty() || other.get$isField())) { 10945 if ($notnull_bool(other.get$isProperty() || other.get$isField())) {
10946 if ($notnull_bool(other.get$isProperty())) this.addFromParent(other); 10946 if ($notnull_bool(other.get$isProperty())) this.addFromParent(other);
10947 else this._overriddenField = other;
10947 return true; 10948 return true;
10948 } 10949 }
10949 else { 10950 else {
10950 world.error('property can only override field or property', this.get$span(), other.get$span()); 10951 world.error('property can only override field or property', this.get$span(), other.get$span());
10951 return false; 10952 return false;
10952 } 10953 }
10953 } 10954 }
10954 PropertyMember.prototype.get_ = function(context, node, target, isDynamic) { 10955 PropertyMember.prototype.get_ = function(context, node, target, isDynamic) {
10955 if ($notnull_bool(this.getter == null)) { 10956 if ($notnull_bool(this.getter == null)) {
10957 if ($notnull_bool(this._overriddenField != null)) {
10958 return this._overriddenField.get_(context, node, target, isDynamic);
10959 }
10956 return target.invokeNoSuchMethod(context, ('get:' + this.name + ''), node); 10960 return target.invokeNoSuchMethod(context, ('get:' + this.name + ''), node);
10957 } 10961 }
10958 return this.getter.invoke(context, node, target, Arguments.get$EMPTY(), false) ; 10962 return this.getter.invoke(context, node, target, Arguments.get$EMPTY(), false) ;
10959 } 10963 }
10960 PropertyMember.prototype.set_ = function(context, node, target, value, isDynamic ) { 10964 PropertyMember.prototype.set_ = function(context, node, target, value, isDynamic ) {
10965 if ($notnull_bool(this.setter == null)) {
10966 if ($notnull_bool(this._overriddenField != null)) {
10967 return this._overriddenField.set_(context, node, target, value, isDynamic) ;
10968 }
10969 return target.invokeNoSuchMethod(context, ('set:' + this.name + ''), node, n ew Arguments(null, [value]));
10970 }
10961 return this.setter.invoke(context, node, target, new Arguments(null, [value]), isDynamic); 10971 return this.setter.invoke(context, node, target, new Arguments(null, [value]), isDynamic);
10962 } 10972 }
10963 PropertyMember.prototype.addFromParent = function(parentMember) { 10973 PropertyMember.prototype.addFromParent = function(parentMember) {
10964 if ($notnull_bool((parentMember instanceof ConcreteMember))) { 10974 if ($notnull_bool((parentMember instanceof ConcreteMember))) {
10965 parentMember = parentMember.baseMember; 10975 parentMember = parentMember.baseMember;
10966 } 10976 }
10967 if ($notnull_bool(this.getter == null)) this.getter = parentMember.getter; 10977 if ($notnull_bool(this.getter == null)) this.getter = parentMember.getter;
10968 if ($notnull_bool(this.setter == null)) this.setter = parentMember.setter; 10978 if ($notnull_bool(this.setter == null)) this.setter = parentMember.setter;
10969 } 10979 }
10970 PropertyMember.prototype.resolve = function(inType) { 10980 PropertyMember.prototype.resolve = function(inType) {
(...skipping 7448 matching lines...) Expand 10 before | Expand all | Expand 10 after
18419 INTERFACE, 18429 INTERFACE,
18420 LIBRARY, 18430 LIBRARY,
18421 NATIVE, 18431 NATIVE,
18422 NEGATE, 18432 NEGATE,
18423 OPERATOR, 18433 OPERATOR,
18424 SET, 18434 SET,
18425 SOURCE, 18435 SOURCE,
18426 STATIC, 18436 STATIC,
18427 TYPEDEF ]*/; 18437 TYPEDEF ]*/;
18428 main(); 18438 main();
OLDNEW
« no previous file with comments | « no previous file | frog/member.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698