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

Side by Side Diff: lib/src/analyzer.dart

Issue 12016007: Add a warning about using a component that isn't referenced (Closed) Base URL: https://github.com/dart-lang/web-ui.git@master
Patch Set: Created 7 years, 11 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
« no previous file with comments | « no previous file | test/analyzer_test.dart » ('j') | test/analyzer_test.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 /** 5 /**
6 * Part of the template compilation that concerns with extracting information 6 * Part of the template compilation that concerns with extracting information
7 * from the HTML parse tree. 7 * from the HTML parse tree.
8 */ 8 */
9 library analyzer; 9 library analyzer;
10 10
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 } 128 }
129 129
130 _bindCustomElement(node, info); 130 _bindCustomElement(node, info);
131 131
132 var lastInfo = _currentInfo; 132 var lastInfo = _currentInfo;
133 if (node.tagName == 'element') { 133 if (node.tagName == 'element') {
134 // If element is invalid _ElementLoader already reported an error, but 134 // If element is invalid _ElementLoader already reported an error, but
135 // we skip the body of the element here. 135 // we skip the body of the element here.
136 var name = node.attributes['name']; 136 var name = node.attributes['name'];
137 if (name == null) return; 137 if (name == null) return;
138
138 var component = _fileInfo.components[name]; 139 var component = _fileInfo.components[name];
139 if (component == null) return; 140 if (component == null) return;
140 141
141 // Associate ElementInfo of the <element> tag with its component. 142 // Associate ElementInfo of the <element> tag with its component.
142 component.elemInfo = info; 143 component.elemInfo = info;
143 144
144 _bindExtends(component); 145 _bindExtends(component);
145 146
146 _currentInfo = component; 147 _currentInfo = component;
147 } 148 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 195
195 return info.hasDataBinding || info.hasIfCondition || info.hasIterate 196 return info.hasDataBinding || info.hasIfCondition || info.hasIterate
196 || info.hasQuery || info.component != null || info.values.length > 0 || 197 || info.hasQuery || info.component != null || info.values.length > 0 ||
197 info.events.length > 0; 198 info.events.length > 0;
198 } 199 }
199 200
200 void _bindExtends(ComponentInfo component) { 201 void _bindExtends(ComponentInfo component) {
201 component.extendsComponent = _fileInfo.components[component.extendsTag]; 202 component.extendsComponent = _fileInfo.components[component.extendsTag];
202 if (component.extendsComponent == null && 203 if (component.extendsComponent == null &&
203 component.extendsTag.startsWith('x-')) { 204 component.extendsTag.startsWith('x-')) {
204
205 _messages.warning( 205 _messages.warning(
206 'custom element with tag name ${component.extendsTag} not found.', 206 'custom element with tag name ${component.extendsTag} not found.',
207 component.element.sourceSpan, file: _fileInfo.path); 207 component.element.sourceSpan, file: _fileInfo.path);
208 } 208 }
209 } 209 }
210 210
211 void _bindCustomElement(Element node, ElementInfo info) { 211 void _bindCustomElement(Element node, ElementInfo info) {
212 // <x-fancy-button> 212 // <x-fancy-button>
213 var component = _fileInfo.components[node.tagName]; 213 var component = _fileInfo.components[node.tagName];
214 if (component == null) { 214 if (component == null) {
215 // TODO(jmesserly): warn for unknown element tags? 215 // TODO(jmesserly): warn for unknown element tags?
216 216
217 // <button is="x-fancy-button"> 217 // <button is="x-fancy-button">
218 var isAttr = node.attributes['is']; 218 var componentName = node.attributes['is'];
219 if (isAttr != null) { 219 if (componentName != null) {
220 component = _fileInfo.components[isAttr]; 220 component = _fileInfo.components[componentName];
221 if (component == null) { 221 } else if (node.tagName.startsWith('x-')) {
222 _messages.warning('custom element with tag name $isAttr not found.', 222 componentName = node.tagName;
223 node.sourceSpan, file: _fileInfo.path); 223 }
224 } 224 if (component == null && componentName != null) {
225 _messages.warning(
226 'custom element with tag name $componentName not found.',
227 node.sourceSpan, file: _fileInfo.path);
225 } 228 }
226 } 229 }
227 230
228 if (component != null && !component.hasConflict) { 231 if (component != null && !component.hasConflict) {
229 info.component = component; 232 info.component = component;
230 _currentInfo.usedComponents[component] = true; 233 _currentInfo.usedComponents[component] = true;
231 } 234 }
232 } 235 }
233 236
234 TemplateInfo _createTemplateInfo(Element node) { 237 TemplateInfo _createTemplateInfo(Element node) {
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 end = text.indexOf('}}', start); 957 end = text.indexOf('}}', start);
955 if (end < 0) { 958 if (end < 0) {
956 start = length; 959 start = length;
957 return false; 960 return false;
958 } 961 }
959 // For consistency, start and end both include the curly braces. 962 // For consistency, start and end both include the curly braces.
960 end += 2; 963 end += 2;
961 return true; 964 return true;
962 } 965 }
963 } 966 }
OLDNEW
« no previous file with comments | « no previous file | test/analyzer_test.dart » ('j') | test/analyzer_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698