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

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

Issue 2898403002: Use failedAt in more places (Closed)
Patch Set: merge; address comments 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 class ElementCodegenWorkItemBuilder extends WorkItemBuilder { 72 class ElementCodegenWorkItemBuilder extends WorkItemBuilder {
73 final JavaScriptBackend _backend; 73 final JavaScriptBackend _backend;
74 final ClosedWorld _closedWorld; 74 final ClosedWorld _closedWorld;
75 final CompilerOptions _options; 75 final CompilerOptions _options;
76 76
77 ElementCodegenWorkItemBuilder( 77 ElementCodegenWorkItemBuilder(
78 this._backend, this._closedWorld, this._options); 78 this._backend, this._closedWorld, this._options);
79 79
80 @override 80 @override
81 WorkItem createWorkItem(MemberElement element) { 81 WorkItem createWorkItem(MemberElement element) {
82 assert(invariant(element, element.isDeclaration)); 82 assert(element.isDeclaration, failedAt(element));
83 // Don't generate code for foreign elements. 83 // Don't generate code for foreign elements.
84 if (_backend.isForeign(element)) return null; 84 if (_backend.isForeign(element)) return null;
85 if (element.isAbstract) return null; 85 if (element.isAbstract) return null;
86 86
87 // Codegen inlines field initializers. It only needs to generate 87 // Codegen inlines field initializers. It only needs to generate
88 // code for checked setters. 88 // code for checked setters.
89 if (element.isField && element.isInstanceMember) { 89 if (element.isField && element.isInstanceMember) {
90 if (!_options.enableTypeAssertions || 90 if (!_options.enableTypeAssertions ||
91 element.enclosingElement.isClosure) { 91 element.enclosingElement.isClosure) {
92 return null; 92 return null;
93 } 93 }
94 } 94 }
95 return new ElementCodegenWorkItem(_backend, _closedWorld, element); 95 return new ElementCodegenWorkItem(_backend, _closedWorld, element);
96 } 96 }
97 } 97 }
98 98
99 class ElementCodegenWorkItem extends CodegenWorkItem { 99 class ElementCodegenWorkItem extends CodegenWorkItem {
100 CodegenRegistry registry; 100 CodegenRegistry registry;
101 final ResolvedAst resolvedAst; 101 final ResolvedAst resolvedAst;
102 final JavaScriptBackend _backend; 102 final JavaScriptBackend _backend;
103 final ClosedWorld _closedWorld; 103 final ClosedWorld _closedWorld;
104 104
105 factory ElementCodegenWorkItem(JavaScriptBackend backend, 105 factory ElementCodegenWorkItem(JavaScriptBackend backend,
106 ClosedWorld closedWorld, MemberElement element) { 106 ClosedWorld closedWorld, MemberElement element) {
107 // If this assertion fails, the resolution callbacks of the backend may be 107 // If this assertion fails, the resolution callbacks of the backend may be
108 // missing call of form registry.registerXXX. Alternatively, the code 108 // missing call of form registry.registerXXX. Alternatively, the code
109 // generation could spuriously be adding dependencies on things we know we 109 // generation could spuriously be adding dependencies on things we know we
110 // don't need. 110 // don't need.
111 assert(invariant(element, element.hasResolvedAst, 111 assert(element.hasResolvedAst,
112 message: "$element has no resolved ast.")); 112 failedAt(element, "$element has no resolved ast."));
113 ResolvedAst resolvedAst = element.resolvedAst; 113 ResolvedAst resolvedAst = element.resolvedAst;
114 return new ElementCodegenWorkItem.internal( 114 return new ElementCodegenWorkItem.internal(
115 resolvedAst, backend, closedWorld); 115 resolvedAst, backend, closedWorld);
116 } 116 }
117 117
118 ElementCodegenWorkItem.internal( 118 ElementCodegenWorkItem.internal(
119 this.resolvedAst, this._backend, this._closedWorld); 119 this.resolvedAst, this._backend, this._closedWorld);
120 120
121 MemberElement get element => resolvedAst.element; 121 MemberElement get element => resolvedAst.element;
122 122
123 WorldImpact run() { 123 WorldImpact run() {
124 registry = new CodegenRegistry(element); 124 registry = new CodegenRegistry(element);
125 return _backend.codegen(this, _closedWorld); 125 return _backend.codegen(this, _closedWorld);
126 } 126 }
127 127
128 String toString() => 'CodegenWorkItem(${resolvedAst.element})'; 128 String toString() => 'CodegenWorkItem(${resolvedAst.element})';
129 } 129 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/checked_mode_helpers.dart ('k') | pkg/compiler/lib/src/js_backend/field_naming_mixin.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698