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

Unified Diff: sdk/lib/_internal/compiler/implementation/resolution/members.dart

Issue 392873002: Element-model refactoring. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 6 years, 5 months 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
Index: sdk/lib/_internal/compiler/implementation/resolution/members.dart
diff --git a/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/sdk/lib/_internal/compiler/implementation/resolution/members.dart
index 5a4654bb0152ce55a6ffca61eb8768788cf3dedc..0061fd73735b164b30127f723347f2818b565421 100644
--- a/sdk/lib/_internal/compiler/implementation/resolution/members.dart
+++ b/sdk/lib/_internal/compiler/implementation/resolution/members.dart
@@ -1183,7 +1183,8 @@ class ResolverTask extends CompilerTask {
return measure(() => SignatureResolver.analyze(
compiler, node.parameters, node.returnType, element,
new ResolutionRegistry(compiler, element),
- defaultValuesError: defaultValuesError));
+ defaultValuesError: defaultValuesError,
+ createRealParameters: true));
});
}
@@ -1293,13 +1294,13 @@ class InitializerResolver {
MessageKind.ALREADY_INITIALIZED, {'fieldName': field.name});
}
- void checkForDuplicateInitializers(VariableElementX field, Node init) {
+ void checkForDuplicateInitializers(FieldElementX field, Node init) {
// [field] can be null if it could not be resolved.
if (field == null) return;
String name = field.name;
if (initialized.containsKey(field)) {
reportDuplicateInitializerError(field, init, initialized[field]);
- } else if (field.modifiers.isFinal) {
+ } else if (field.isFinal) {
field.parseNode(visitor.compiler);
Expression initializer = field.initializer;
if (initializer != null) {
@@ -1463,9 +1464,9 @@ class InitializerResolver {
// that we can ensure that fields are initialized only once.
FunctionSignature functionParameters = constructor.functionSignature;
functionParameters.forEachParameter((ParameterElement element) {
- if (identical(element.kind, ElementKind.FIELD_PARAMETER)) {
- FieldParameterElement fieldParameter = element;
- checkForDuplicateInitializers(fieldParameter.fieldElement,
+ if (element.isInitializingFormal) {
+ InitializingFormalElement initializingFormal = element;
+ checkForDuplicateInitializers(initializingFormal.fieldElement,
element.initializer);
}
});
@@ -1508,7 +1509,7 @@ class InitializerResolver {
Compiler compiler = visitor.compiler;
FunctionSignature signature = constructor.functionSignature;
signature.forEachParameter((ParameterElement parameter) {
- if (parameter.isFieldParameter) {
+ if (parameter.isInitializingFormal) {
Node node = parameter.node;
error(node, MessageKind.INITIALIZING_FORMAL_NOT_ALLOWED);
}
@@ -2032,7 +2033,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
// fields.
inInstanceContext = (element.isInstanceMember && !element.isField)
|| element.isGenerativeConstructor,
- this.currentClass = element.isMember ? element.enclosingClass
+ this.currentClass = element.isClassMember ? element.enclosingClass
: null,
this.statementScope = new StatementScope(),
scope = useEnclosingScope
@@ -2222,7 +2223,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
Node parameterNode = variableDefinitions.definitions.nodes.head;
// Field parameters (this.x) are not visible inside the constructor. The
// fields they reference are visible, but must be resolved independently.
- if (element.kind == ElementKind.FIELD_PARAMETER) {
+ if (element.isInitializingFormal) {
registry.useElement(parameterNode, element);
} else {
defineElement(parameterNode, element);
@@ -2323,7 +2324,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
enclosingElement);
function.functionSignatureCache =
SignatureResolver.analyze(compiler, node.parameters, node.returnType,
- function, registry);
+ function, registry, createRealParameters: true);
Scope oldScope = scope; // The scope is modified by [setupFunction].
setupFunction(node, function);
defineElement(node, function, doAddToScope: node.name != null);
@@ -3854,7 +3855,7 @@ class TypedefResolverVisitor extends TypeDefinitionVisitor {
element.functionSignature = signature;
scope = new MethodScope(scope, element);
- signature.forEachParameter((ParameterElement element) {
+ signature.forEachParameter((FormalElement element) {
defineElement(element.node, element);
});

Powered by Google App Engine
This is Rietveld 408576698