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

Side by Side Diff: pkg/dev_compiler/lib/js/legacy/dart_library.js

Issue 2954523002: fix #27259, implement covariance checking for strong mode and DDC (Closed)
Patch Set: merged and fix an analysis error Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 /* This file defines the module loader for the dart runtime. 5 /* This file defines the module loader for the dart runtime.
6 */ 6 */
7 var dart_library; 7 var dart_library;
8 if (!dart_library) { 8 if (!dart_library) {
9 dart_library = 9 dart_library =
10 typeof module != "undefined" && module.exports || {}; 10 typeof module != "undefined" && module.exports || {};
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 this._imports = imports; 69 this._imports = imports;
70 this._loader = loader; 70 this._loader = loader;
71 71
72 // Cyclic import detection 72 // Cyclic import detection
73 this._state = LibraryLoader.NOT_LOADED; 73 this._state = LibraryLoader.NOT_LOADED;
74 } 74 }
75 75
76 loadImports() { 76 loadImports() {
77 let results = []; 77 let results = [];
78 for (let name of this._imports) { 78 for (let name of this._imports) {
79 results.push(import_(name)); 79 let lib = libraries.get(name);
80 if (!lib) {
81 throwLibraryError('Library not available: ' + name);
82 }
83 results.push(lib.load());
80 } 84 }
81 return results; 85 return results;
82 } 86 }
83 87
84 load() { 88 load() {
85 // Check for cycles 89 // Check for cycles
86 if (this._state == LibraryLoader.LOADING) { 90 if (this._state == LibraryLoader.LOADING) {
87 throwLibraryError('Circular dependence on library: ' 91 throwLibraryError('Circular dependence on library: '
88 + this._name); 92 + this._name);
89 } else if (this._state >= LibraryLoader.READY) { 93 } else if (this._state >= LibraryLoader.READY) {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 if (result) { 163 if (result) {
160 console.log('Re-loading ' + name); 164 console.log('Re-loading ' + name);
161 _invalidateLibrary(name); 165 _invalidateLibrary(name);
162 } 166 }
163 result = new LibraryLoader(name, defaultValue, imports, loader); 167 result = new LibraryLoader(name, defaultValue, imports, loader);
164 _libraries.set(name, result); 168 _libraries.set(name, result);
165 return result; 169 return result;
166 } 170 }
167 dart_library.library = library; 171 dart_library.library = library;
168 172
173 <<<<<<< HEAD
174 function import_(libraryName) {
175 let loader = libraries.get(libraryName);
176 // TODO(vsm): A user might call this directly from JS (as we do in tests).
177 // We may want a different error type.
178 if (!loader) throwLibraryError('Library not found: ' + libraryName);
179 return loader.load();
180 =======
169 // Maintain a stack of active imports. If a requested library/module is not 181 // Maintain a stack of active imports. If a requested library/module is not
170 // available, print the stack to show where/how it was requested. 182 // available, print the stack to show where/how it was requested.
171 let _stack = []; 183 let _stack = [];
172 function import_(name) { 184 function import_(name) {
173 let lib = _libraries.get(name); 185 let lib = _libraries.get(name);
174 if (!lib) { 186 if (!lib) {
175 let message = 'Module ' + name + ' not loaded in the browser.'; 187 let message = 'Module ' + name + ' not loaded in the browser.';
176 if (_stack != []) { 188 if (_stack != []) {
177 message += '\nDependency via:'; 189 message += '\nDependency via:';
178 let indent = ''; 190 let indent = '';
179 for (let last = _stack.length - 1; last >= 0; last--) { 191 for (let last = _stack.length - 1; last >= 0; last--) {
180 indent += ' '; 192 indent += ' ';
181 message += '\n' + indent + '- ' + _stack[last]; 193 message += '\n' + indent + '- ' + _stack[last];
182 } 194 }
183 } 195 }
184 throwLibraryError(message); 196 throwLibraryError(message);
185 } 197 }
186 _stack.push(name); 198 _stack.push(name);
187 let result = lib.load(); 199 let result = lib.load();
188 _stack.pop(); 200 _stack.pop();
189 return result; 201 return result;
202 >>>>>>> origin/master
190 } 203 }
191 dart_library.import = import_; 204 dart_library.import = import_;
192 205
193 var _currentIsolate = false; 206 var _currentIsolate = false;
194 207
195 function _restart() { 208 function _restart() {
196 start(_lastModuleName, _lastLibraryName, true); 209 start(_lastModuleName, _lastLibraryName, true);
197 } 210 }
198 211
199 function reload() { 212 function reload() {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 } else { 262 } else {
250 // If not a reload then store the initial html to reset it on reload. 263 // If not a reload then store the initial html to reset it on reload.
251 _originalBody = document.body.cloneNode(true); 264 _originalBody = document.body.cloneNode(true);
252 } 265 }
253 library.main(); 266 library.main();
254 } 267 }
255 dart_library.start = start; 268 dart_library.start = start;
256 269
257 })(dart_library); 270 })(dart_library);
258 } 271 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/generated/strong_mode_test.dart ('k') | pkg/dev_compiler/lib/src/compiler/code_generator.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698