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

Side by Side Diff: pkg/compiler/lib/src/js_backend/element_strategy.dart

Issue 2898403002: Use failedAt in more places (Closed)
Patch Set: Created 3 years, 7 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 library dart2js.js_backend.element_strategy; 5 library dart2js.js_backend.element_strategy;
6 6
7 import '../backend_strategy.dart'; 7 import '../backend_strategy.dart';
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/codegen.dart'; 9 import '../common/codegen.dart';
10 import '../common/work.dart'; 10 import '../common/work.dart';
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 class ElementCodegenWorkItemBuilder extends WorkItemBuilder { 60 class ElementCodegenWorkItemBuilder extends WorkItemBuilder {
61 final JavaScriptBackend _backend; 61 final JavaScriptBackend _backend;
62 final ClosedWorld _closedWorld; 62 final ClosedWorld _closedWorld;
63 final CompilerOptions _options; 63 final CompilerOptions _options;
64 64
65 ElementCodegenWorkItemBuilder( 65 ElementCodegenWorkItemBuilder(
66 this._backend, this._closedWorld, this._options); 66 this._backend, this._closedWorld, this._options);
67 67
68 @override 68 @override
69 WorkItem createWorkItem(MemberElement element) { 69 WorkItem createWorkItem(MemberElement element) {
70 assert(invariant(element, element.isDeclaration)); 70 assert(element.isDeclaration, failedAt(element));
71 // Don't generate code for foreign elements. 71 // Don't generate code for foreign elements.
72 if (_backend.isForeign(element)) return null; 72 if (_backend.isForeign(element)) return null;
73 if (element.isAbstract) return null; 73 if (element.isAbstract) return null;
74 74
75 // Codegen inlines field initializers. It only needs to generate 75 // Codegen inlines field initializers. It only needs to generate
76 // code for checked setters. 76 // code for checked setters.
77 if (element.isField && element.isInstanceMember) { 77 if (element.isField && element.isInstanceMember) {
78 if (!_options.enableTypeAssertions || 78 if (!_options.enableTypeAssertions ||
79 element.enclosingElement.isClosure) { 79 element.enclosingElement.isClosure) {
80 return null; 80 return null;
81 } 81 }
82 } 82 }
83 return new ElementCodegenWorkItem(_backend, _closedWorld, element); 83 return new ElementCodegenWorkItem(_backend, _closedWorld, element);
84 } 84 }
85 } 85 }
86 86
87 class ElementCodegenWorkItem extends CodegenWorkItem { 87 class ElementCodegenWorkItem extends CodegenWorkItem {
88 CodegenRegistry registry; 88 CodegenRegistry registry;
89 final ResolvedAst resolvedAst; 89 final ResolvedAst resolvedAst;
90 final JavaScriptBackend _backend; 90 final JavaScriptBackend _backend;
91 final ClosedWorld _closedWorld; 91 final ClosedWorld _closedWorld;
92 92
93 factory ElementCodegenWorkItem(JavaScriptBackend backend, 93 factory ElementCodegenWorkItem(JavaScriptBackend backend,
94 ClosedWorld closedWorld, MemberElement element) { 94 ClosedWorld closedWorld, MemberElement element) {
95 // If this assertion fails, the resolution callbacks of the backend may be 95 // If this assertion fails, the resolution callbacks of the backend may be
96 // missing call of form registry.registerXXX. Alternatively, the code 96 // missing call of form registry.registerXXX. Alternatively, the code
97 // generation could spuriously be adding dependencies on things we know we 97 // generation could spuriously be adding dependencies on things we know we
98 // don't need. 98 // don't need.
99 assert(invariant(element, element.hasResolvedAst, 99 assert(element.hasResolvedAst,
100 message: "$element has no resolved ast.")); 100 failedAt(element, "$element has no resolved ast."));
101 ResolvedAst resolvedAst = element.resolvedAst; 101 ResolvedAst resolvedAst = element.resolvedAst;
102 return new ElementCodegenWorkItem.internal( 102 return new ElementCodegenWorkItem.internal(
103 resolvedAst, backend, closedWorld); 103 resolvedAst, backend, closedWorld);
104 } 104 }
105 105
106 ElementCodegenWorkItem.internal( 106 ElementCodegenWorkItem.internal(
107 this.resolvedAst, this._backend, this._closedWorld); 107 this.resolvedAst, this._backend, this._closedWorld);
108 108
109 MemberElement get element => resolvedAst.element; 109 MemberElement get element => resolvedAst.element;
110 110
111 WorldImpact run() { 111 WorldImpact run() {
112 registry = new CodegenRegistry(element); 112 registry = new CodegenRegistry(element);
113 return _backend.codegen(this, _closedWorld); 113 return _backend.codegen(this, _closedWorld);
114 } 114 }
115 115
116 String toString() => 'CodegenWorkItem(${resolvedAst.element})'; 116 String toString() => 'CodegenWorkItem(${resolvedAst.element})';
117 } 117 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698