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

Unified Diff: frog/member.dart

Issue 8509035: TBR (red build bot). (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « frog/library.dart ('k') | frog/tree.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: frog/member.dart
diff --git a/frog/member.dart b/frog/member.dart
index 9bab915ac9099d4017ae1682a5018051573f16d8..09fa429ea010d885db68b9459aa93c3c9ddbb4a3 100644
--- a/frog/member.dart
+++ b/frog/member.dart
@@ -115,11 +115,6 @@ class Member implements Named {
bool get isProperty() => false;
bool get isAbstract() => false;
- // TODO(jmesserly): these only makes sense on methods, but because of
- // ConcreteMember we need to support them on Member.
- bool get isConst() => false;
- bool get isFactory() => false;
-
bool get prefersPropertySyntax() => true;
bool get requiresFieldSyntax() => false;
@@ -129,12 +124,7 @@ class Member implements Named {
void provideFieldSyntax() => world.internalError('can not be field', span);
void providePropertySyntax() =>
- world.internalError('can not be property', span);
-
- Definition get initDelegate() =>
- world.internalError('cannot have initializers', span);
- Definition set initDelegate(ctor) =>
- world.internalError('cannot have initializers', span);
+ world.internalError('can not be property', span);
Definition get definition() => null;
@@ -179,16 +169,6 @@ class Member implements Named {
return '${prefix}$name\$factory';
}
}
-
- Type resolveType(TypeReference node, bool isRequired) {
- var type = declaringType.resolveType(node, isRequired);
- if (isStatic && type.hasTypeParams) {
- // TODO(jimhug): Is this really so hard?
- world.error('using type parameter in static context',
- node.span);
- }
- return type;
- }
}
@@ -209,7 +189,7 @@ class TypeMember extends Member {
bool get isStatic() => true;
// If this really becomes first class, this should return typeof(Type)
- Type get returnType() => world.varType;
+ Type get returnType() => world.isVar;
bool canInvoke(MethodGenerator context, Arguments args) => false;
bool get canGet() => true;
@@ -386,7 +366,7 @@ class FieldMember extends Member {
}
} else if (target.isConst && isFinal) {
// take advantage of consts and retrieve the value directly if possible
- var constTarget = target is GlobalValue ? target.dynamic.exp : target;
+ var constTarget = target is GlobalValue ? target.exp : target;
if (constTarget is ConstObjectValue) {
return constTarget.fields[name];
} else if (constTarget.type == world.stringType && name == 'length') {
@@ -478,16 +458,12 @@ class PropertyMember extends Member {
addFromParent(Member parentMember) {
// TODO(jimhug): Egregious Hack!
- PropertyMember parent;
if (parentMember is ConcreteMember) {
- ConcreteMember c = parentMember;
- parent = c.baseMember;
- } else {
- parent = parentMember;
+ parentMember = parentMember.baseMember;
}
- if (getter == null) getter = parent.getter;
- if (setter == null) setter = parent.setter;
+ if (getter == null) getter = parentMember.getter;
+ if (setter == null) setter = parentMember.setter;
}
resolve(Type inType) {
@@ -524,12 +500,12 @@ class ConcreteMember extends Member {
bool get isStatic() => baseMember.isStatic;
bool get isAbstract() => baseMember.isAbstract;
bool get isConst() => baseMember.isConst;
- bool get isFactory() => baseMember.isFactory;
String get jsname() => baseMember.jsname;
set jsname(String name) =>
world.internalError('bad set of jsname on ConcreteMember');
+ bool get isFactory() => baseMember.isFactory;
bool get canGet() => baseMember.canGet;
bool get canSet() => baseMember.canSet;
@@ -640,14 +616,13 @@ class MethodMember extends Member {
SourceSpan get span() => definition == null ? null : definition.span;
String get constructorName() {
- NameTypeReference returnType = definition.returnType;
- if (returnType == null) return '';
+ if (definition.returnType == null) return '';
// TODO(jmesserly): make this easier?
- if (returnType.names != null) {
- return returnType.names[0].name;
- } else if (returnType.name != null) {
- return returnType.name.name;
+ if (definition.returnType.names != null) {
+ return definition.returnType.names[0].name;
+ } else if (definition.returnType.name != null) {
+ return definition.returnType.name.name;
}
world.internalError('no valid constructor name', definition.span);
}
@@ -711,6 +686,16 @@ class MethodMember extends Member {
return -1;
}
+ Type resolveType(TypeReference node, bool isRequired) {
+ var type = declaringType.resolveType(node, isRequired);
+ if (isStatic && type.hasTypeParams) {
+ // TODO(jimhug): Is this really so hard?
+ world.error('using type parameter in static context',
+ node.span);
+ }
+ return type;
+ }
+
bool get prefersPropertySyntax() => true;
bool get requiresFieldSyntax() => false;
@@ -925,15 +910,15 @@ class MethodMember extends Member {
// optimize expressions which we know statically their value.
if (target.isConst) {
if (target is GlobalValue) {
- target = target.dynamic.exp; // TODO: an inline "cast" would be nice.
+ target = target.exp;
}
if (name == 'get\$length') {
if (target is ConstListValue || target is ConstMapValue) {
- code = '${target.dynamic.values.length}';
+ code = '${target.values.length}';
}
} else if (name == 'isEmpty') {
if (target is ConstListValue || target is ConstMapValue) {
- code = '${target.dynamic.values.isEmpty()}';
+ code = '${target.values.isEmpty()}';
}
}
}
@@ -946,8 +931,8 @@ class MethodMember extends Member {
return new Value(returnType, code);
}
- Value _invokeConstructor(MethodGenerator context, Node node,
- Value target, Arguments args, argsString) {
+ Value _invokeConstructor(MethodGenerator context, Node node, Value target,
+ Arguments args, argsString) {
declaringType.markUsed();
if (target != null) {
@@ -960,8 +945,7 @@ class MethodMember extends Member {
var code = (constructorName != '')
? 'new ${declaringType.jsname}.${constructorName}\$ctor($argsString)'
: 'new ${declaringType.jsname}($argsString)';
- // TODO(jmesserly): using the "node" here feels really hacky
- if (isConst && node is NewExpression && node.dynamic.isConst) {
+ if (isConst && node.isConst) {
return _invokeConstConstructor(node, code, target, args);
} else {
return new Value(declaringType, code);
@@ -1048,10 +1032,8 @@ class MethodMember extends Member {
}
} else {
// Normal field initializer assignment.
- BinaryExpression assign = init;
- VarExpression x = assign.x;
- var fname = x.name.name;
- var val = generator.visitValue(assign.y);
+ var fname = init.x.name.name;
+ var val = generator.visitValue(init.y);
fields[fname] = val;
}
}
« no previous file with comments | « frog/library.dart ('k') | frog/tree.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698