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

Side by Side Diff: pkg/compiler/lib/src/resolution/members.dart

Issue 1148343004: Remove ConstantExpression.value (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Update comments. Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of resolution; 5 part of resolution;
6 6
7 /** 7 /**
8 * Core implementation of resolution. 8 * Core implementation of resolution.
9 * 9 *
10 * Do not subclass or instantiate this class outside this library 10 * Do not subclass or instantiate this class outside this library
(...skipping 1951 matching lines...) Expand 10 before | Expand all | Expand 10 after
1962 warning(node, MessageKind.ABSTRACT_CLASS_INSTANTIATION); 1962 warning(node, MessageKind.ABSTRACT_CLASS_INSTANTIATION);
1963 registry.registerAbstractClassInstantiation(); 1963 registry.registerAbstractClassInstantiation();
1964 } 1964 }
1965 1965
1966 if (isSymbolConstructor) { 1966 if (isSymbolConstructor) {
1967 if (node.isConst) { 1967 if (node.isConst) {
1968 Node argumentNode = node.send.arguments.head; 1968 Node argumentNode = node.send.arguments.head;
1969 ConstantExpression constant = 1969 ConstantExpression constant =
1970 compiler.resolver.constantCompiler.compileNode( 1970 compiler.resolver.constantCompiler.compileNode(
1971 argumentNode, registry.mapping); 1971 argumentNode, registry.mapping);
1972 ConstantValue name = constant.value; 1972 ConstantValue name = compiler.constants.getConstantValue(constant);
1973 if (!name.isString) { 1973 if (!name.isString) {
1974 DartType type = name.getType(compiler.coreTypes); 1974 DartType type = name.getType(compiler.coreTypes);
1975 compiler.reportError(argumentNode, MessageKind.STRING_EXPECTED, 1975 compiler.reportError(argumentNode, MessageKind.STRING_EXPECTED,
1976 {'type': type}); 1976 {'type': type});
1977 } else { 1977 } else {
1978 StringConstantValue stringConstant = name; 1978 StringConstantValue stringConstant = name;
1979 String nameString = stringConstant.toDartString().slowToString(); 1979 String nameString = stringConstant.toDartString().slowToString();
1980 if (validateSymbol(argumentNode, nameString)) { 1980 if (validateSymbol(argumentNode, nameString)) {
1981 registry.registerConstSymbol(nameString); 1981 registry.registerConstSymbol(nameString);
1982 } 1982 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 void analyzeConstant(Node node, {enforceConst: true}) { 2020 void analyzeConstant(Node node, {enforceConst: true}) {
2021 ConstantExpression constant = 2021 ConstantExpression constant =
2022 compiler.resolver.constantCompiler.compileNode( 2022 compiler.resolver.constantCompiler.compileNode(
2023 node, registry.mapping, enforceConst: enforceConst); 2023 node, registry.mapping, enforceConst: enforceConst);
2024 2024
2025 if (constant == null) { 2025 if (constant == null) {
2026 assert(invariant(node, compiler.compilationFailed)); 2026 assert(invariant(node, compiler.compilationFailed));
2027 return; 2027 return;
2028 } 2028 }
2029 2029
2030 ConstantValue value = constant.value; 2030 ConstantValue value = compiler.constants.getConstantValue(constant);
2031 if (value.isMap) { 2031 if (value.isMap) {
2032 checkConstMapKeysDontOverrideEquals(node, value); 2032 checkConstMapKeysDontOverrideEquals(node, value);
2033 } 2033 }
2034 2034
2035 // The type constant that is an argument to JS_INTERCEPTOR_CONSTANT names 2035 // The type constant that is an argument to JS_INTERCEPTOR_CONSTANT names
2036 // a class that will be instantiated outside the program by attaching a 2036 // a class that will be instantiated outside the program by attaching a
2037 // native class dispatch record referencing the interceptor. 2037 // native class dispatch record referencing the interceptor.
2038 if (argumentsToJsInterceptorConstant != null && 2038 if (argumentsToJsInterceptorConstant != null &&
2039 argumentsToJsInterceptorConstant.contains(node)) { 2039 argumentsToJsInterceptorConstant.contains(node)) {
2040 if (value.isType) { 2040 if (value.isType) {
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 for (Node labelOrCase in switchCase.labelsAndCases) { 2425 for (Node labelOrCase in switchCase.labelsAndCases) {
2426 CaseMatch caseMatch = labelOrCase.asCaseMatch(); 2426 CaseMatch caseMatch = labelOrCase.asCaseMatch();
2427 if (caseMatch == null) continue; 2427 if (caseMatch == null) continue;
2428 2428
2429 // Analyze the constant. 2429 // Analyze the constant.
2430 ConstantExpression constant = 2430 ConstantExpression constant =
2431 registry.getConstant(caseMatch.expression); 2431 registry.getConstant(caseMatch.expression);
2432 assert(invariant(node, constant != null, 2432 assert(invariant(node, constant != null,
2433 message: 'No constant computed for $node')); 2433 message: 'No constant computed for $node'));
2434 2434
2435 DartType caseType = typeOfConstant(constant.value); 2435 ConstantValue value = compiler.constants.getConstantValue(constant);
2436 DartType caseType = typeOfConstant(value);
2436 2437
2437 if (firstCaseType == null) { 2438 if (firstCaseType == null) {
2438 firstCase = caseMatch; 2439 firstCase = caseMatch;
2439 firstCaseType = caseType; 2440 firstCaseType = caseType;
2440 2441
2441 // We only report the bad type on the first class element. All others 2442 // We only report the bad type on the first class element. All others
2442 // get a "type differs" error. 2443 // get a "type differs" error.
2443 if (caseType.element == compiler.doubleClass) { 2444 if (caseType.element == compiler.doubleClass) {
2444 compiler.reportError(node, 2445 compiler.reportError(node,
2445 MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS, 2446 MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
2446 {'type': "double"}); 2447 {'type': "double"});
2447 } else if (caseType.element == compiler.functionClass) { 2448 } else if (caseType.element == compiler.functionClass) {
2448 compiler.reportError(node, MessageKind.SWITCH_CASE_FORBIDDEN, 2449 compiler.reportError(node, MessageKind.SWITCH_CASE_FORBIDDEN,
2449 {'type': "Function"}); 2450 {'type': "Function"});
2450 } else if (constant.value.isObject && overridesEquals(caseType)) { 2451 } else if (value.isObject && overridesEquals(caseType)) {
2451 compiler.reportError(firstCase.expression, 2452 compiler.reportError(firstCase.expression,
2452 MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS, 2453 MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
2453 {'type': caseType}); 2454 {'type': caseType});
2454 } 2455 }
2455 } else { 2456 } else {
2456 if (caseType != firstCaseType) { 2457 if (caseType != firstCaseType) {
2457 if (!hasReportedProblem) { 2458 if (!hasReportedProblem) {
2458 compiler.reportError( 2459 compiler.reportError(
2459 node, 2460 node,
2460 MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL, 2461 MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL,
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
2641 visitTypedef(Typedef node) { 2642 visitTypedef(Typedef node) {
2642 internalError(node, 'typedef'); 2643 internalError(node, 'typedef');
2643 } 2644 }
2644 } 2645 }
2645 2646
2646 /// Looks up [name] in [scope] and unwraps the result. 2647 /// Looks up [name] in [scope] and unwraps the result.
2647 Element lookupInScope(Compiler compiler, Node node, 2648 Element lookupInScope(Compiler compiler, Node node,
2648 Scope scope, String name) { 2649 Scope scope, String name) {
2649 return Elements.unwrap(scope.lookup(name), compiler, node); 2650 return Elements.unwrap(scope.lookup(name), compiler, node);
2650 } 2651 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/patch_parser.dart ('k') | pkg/compiler/lib/src/resolution/resolution_common.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698