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

Side by Side Diff: tests/compiler/dart2js/js_spec_string_test.dart

Issue 1490103002: Make JS-form 'returns:' annotation imply 'creates:' unless otherwise specified (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years 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 | « pkg/compiler/lib/src/native/behavior.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 // Unit test of the [NativeBehavior.processSpecString] method. 5 // Unit test of the [NativeBehavior.processSpecString] method.
6 6
7 import 'package:expect/expect.dart'; 7 import 'package:expect/expect.dart';
8 import 'package:compiler/src/native/native.dart'; 8 import 'package:compiler/src/native/native.dart';
9 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; 9 import 'package:compiler/src/diagnostics/diagnostic_listener.dart';
10 import 'package:compiler/src/diagnostics/messages.dart'; 10 import 'package:compiler/src/diagnostics/messages.dart';
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 null, 57 null,
58 specString, 58 specString,
59 setSideEffects: (effects) { actualSideEffects = effects; }, 59 setSideEffects: (effects) { actualSideEffects = effects; },
60 setThrows: (b) { actualThrows = b; }, 60 setThrows: (b) { actualThrows = b; },
61 setIsAllocation: (b) { actualNew = b; }, 61 setIsAllocation: (b) { actualNew = b; },
62 setUseGvn: (b) { actualGvn = b; }, 62 setUseGvn: (b) { actualGvn = b; },
63 resolveType: (t) => t, 63 resolveType: (t) => t,
64 typesReturned: actualReturns, typesInstantiated: actualCreates, 64 typesReturned: actualReturns, typesInstantiated: actualCreates,
65 objectType: OBJECT, nullType: NULL); 65 objectType: OBJECT, nullType: NULL);
66 } catch (e) { 66 } catch (e) {
67 Expect.isTrue(expectError); 67 Expect.isTrue(expectError, 'Unexpected error "$specString"');
68 Expect.isNotNull(listener.errorMessage, 'Error expected.'); 68 Expect.isNotNull(listener.errorMessage, 'Error message expected.');
69 return; 69 return;
70 } 70 }
71 Expect.isFalse(expectError, 'Missing error for "$specString".');
71 Expect.isNull(listener.errorMessage, 'Unexpected error.'); 72 Expect.isNull(listener.errorMessage, 'Unexpected error.');
72 if (returns != null) { 73 if (returns != null) {
73 Expect.listEquals(returns, actualReturns, 'Unexpected returns.'); 74 Expect.listEquals(returns, actualReturns, 'Unexpected returns.');
74 } 75 }
75 if (creates != null) { 76 if (creates != null) {
76 Expect.listEquals(creates, actualCreates, 'Unexpected creates.'); 77 Expect.listEquals(creates, actualCreates, 'Unexpected creates.');
77 } 78 }
78 Expect.equals(expectedSideEffects, actualSideEffects); 79 Expect.equals(expectedSideEffects, actualSideEffects);
79 Expect.equals(expectedThrows, actualThrows); 80 Expect.equals(expectedThrows, actualThrows);
80 Expect.equals(expectedNew, actualNew); 81 Expect.equals(expectedNew, actualNew);
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 test('void', returns: [], creates: []); 211 test('void', returns: [], creates: []);
211 test('', returns: [OBJECT, NULL], creates: []); 212 test('', returns: [OBJECT, NULL], creates: []);
212 test('var', returns: [OBJECT, NULL], creates: []); 213 test('var', returns: [OBJECT, NULL], creates: []);
213 test('A', returns: ['A'], creates: ['A']); 214 test('A', returns: ['A'], creates: ['A']);
214 test('A|B', returns: ['A', 'B'], creates: ['A', 'B']); 215 test('A|B', returns: ['A', 'B'], creates: ['A', 'B']);
215 test('A|B|C', returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']); 216 test('A|B|C', returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']);
216 217
217 test('returns:void;', returns: [], creates: []); 218 test('returns:void;', returns: [], creates: []);
218 test('returns:;', returns: [OBJECT, NULL], creates: []); 219 test('returns:;', returns: [OBJECT, NULL], creates: []);
219 test('returns:var;', returns: [OBJECT, NULL], creates: []); 220 test('returns:var;', returns: [OBJECT, NULL], creates: []);
220 test('returns:A;', returns: ['A'], creates: []); 221 test('returns:A;', returns: ['A'], creates: ['A']);
221 test('returns:A|B;', returns: ['A', 'B'], creates: []); 222 test('returns:A|B;', returns: ['A', 'B'], creates: ['A', 'B']);
222 test('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: []); 223 test('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']);
223 224
224 test('creates:void;', expectError: true); 225 test('creates:void;', expectError: true);
225 test('creates:;', expectError: true); 226 test('creates:;', creates: []);
226 test('creates:var;', expectError: true); 227 test('creates:var;', creates: []);
227 test('creates:A;', returns: [], creates: ['A']); 228 test('creates:A;', returns: [], creates: ['A']);
228 test('creates:A|B;', returns: [], creates: ['A', 'B']); 229 test('creates:A|B;', returns: [], creates: ['A', 'B']);
229 test('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']); 230 test('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']);
230 231
232 test('returns:void;creates:', returns: [], creates: []);
233 test('returns:;creates:', returns: [OBJECT, NULL], creates: []);
234 test('returns:var;creates:', returns: [OBJECT, NULL], creates: []);
235 test('returns:A;creates:', returns: ['A'], creates: []);
236 test('returns:A|B;creates:;', returns: ['A', 'B'], creates: []);
237 test('returns:A|B|C;creates:;', returns: ['A', 'B', 'C'], creates: []);
238
231 test('returns:void;creates:A;', returns: [], creates: ['A']); 239 test('returns:void;creates:A;', returns: [], creates: ['A']);
232 test('returns:;creates:A|B;', returns: [OBJECT, NULL], creates: ['A', 'B']); 240 test('returns:;creates:A|B;', returns: [OBJECT, NULL], creates: ['A', 'B']);
233 test('returns:var;creates:A|B|C;', 241 test('returns:var;creates:A|B|C;',
234 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']); 242 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']);
235 test('returns:A; creates:A|B|C; ', returns: ['A'], creates: ['A', 'B', 'C']); 243 test('returns:A; creates:A|B|C; ', returns: ['A'], creates: ['A', 'B', 'C']);
236 test(' returns:A|B; creates:A|C;', 244 test(' returns:A|B; creates:A|C;',
237 returns: ['A', 'B'], creates: ['A', 'C']); 245 returns: ['A', 'B'], creates: ['A', 'C']);
238 test(' returns:A|B|C; creates:A; ', 246 test(' returns:A|B|C; creates:A; ',
239 returns: ['A', 'B', 'C'], creates: ['A']); 247 returns: ['A', 'B', 'C'], creates: ['A']);
240 248
241 testWithSideEffects('returns:void;', returns: [], creates: []); 249 testWithSideEffects('returns:void;', returns: [], creates: []);
242 testWithSideEffects('returns:void;', returns: [], creates: []); 250 testWithSideEffects('returns:void;', returns: [], creates: []);
243 testWithSideEffects('returns:;', returns: [OBJECT, NULL], creates: []); 251 testWithSideEffects('returns:;', returns: [OBJECT, NULL], creates: []);
244 testWithSideEffects('returns:var;', returns: [OBJECT, NULL], creates: []); 252 testWithSideEffects('returns:var;', returns: [OBJECT, NULL], creates: []);
245 testWithSideEffects('returns:A;', returns: ['A'], creates: []); 253 testWithSideEffects('returns:A;', returns: ['A'], creates: ['A']);
246 testWithSideEffects('returns:A|B;', returns: ['A', 'B'], creates: []); 254 testWithSideEffects('returns:A|B;',
247 testWithSideEffects('returns:A|B|C;', returns: ['A', 'B', 'C'], creates: []); 255 returns: ['A', 'B'], creates: ['A', 'B']);
256 testWithSideEffects('returns:A|B|C;',
257 returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']);
248 testWithSideEffects('returns: A| B |C ;', 258 testWithSideEffects('returns: A| B |C ;',
249 returns: ['A', 'B', 'C'], creates: []); 259 returns: ['A', 'B', 'C'], creates: ['A', 'B', 'C']);
250 260
251 testWithSideEffects('creates:void;', expectError: true); 261 testWithSideEffects('creates:void;', expectError: true);
252 testWithSideEffects('creates:;', expectError: true); 262 testWithSideEffects('creates:;', creates: []);
253 testWithSideEffects('creates:var;', expectError: true); 263 testWithSideEffects('creates:var;', creates: []);
254 testWithSideEffects('creates:A;', returns: [], creates: ['A']); 264 testWithSideEffects('creates:A;', returns: [], creates: ['A']);
255 testWithSideEffects('creates:A|B;', returns: [], creates: ['A', 'B']); 265 testWithSideEffects('creates:A|B;', returns: [], creates: ['A', 'B']);
256 testWithSideEffects('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']); 266 testWithSideEffects('creates:A|B|C;', returns: [], creates: ['A', 'B', 'C']);
257 267
268 testWithSideEffects('returns:void;creates:;', returns: [], creates: []);
269 testWithSideEffects('returns:;creates:;',
270 returns: [OBJECT, NULL], creates: []);
271 testWithSideEffects('returns:var;creates:;',
272 returns: [OBJECT, NULL], creates: []);
273 testWithSideEffects('returns:A;creates:;', returns: ['A'], creates: []);
274 testWithSideEffects('returns:A|B;creates:;',
275 returns: ['A', 'B'], creates: []);
276 testWithSideEffects('returns:A|B|C;creates:;',
277 returns: ['A', 'B', 'C'], creates: []);
278
258 testWithSideEffects('returns:void;creates:A;', returns: [], creates: ['A']); 279 testWithSideEffects('returns:void;creates:A;', returns: [], creates: ['A']);
259 testWithSideEffects('returns:;creates:A|B;', 280 testWithSideEffects('returns:;creates:A|B;',
260 returns: [OBJECT, NULL], creates: ['A', 'B']); 281 returns: [OBJECT, NULL], creates: ['A', 'B']);
261 testWithSideEffects('returns:var;creates:A|B|C;', 282 testWithSideEffects('returns:var;creates:A|B|C;',
262 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']); 283 returns: [OBJECT, NULL], creates: ['A', 'B', 'C']);
263 testWithSideEffects('returns:A; creates:A|B|C; ', 284 testWithSideEffects('returns:A; creates:A|B|C; ',
264 returns: ['A'], creates: ['A', 'B', 'C']); 285 returns: ['A'], creates: ['A', 'B', 'C']);
265 testWithSideEffects(' returns:A|B; creates:A|C;', 286 testWithSideEffects(' returns:A|B; creates:A|C;',
266 returns: ['A', 'B'], creates: ['A', 'C']); 287 returns: ['A', 'B'], creates: ['A', 'C']);
267 testWithSideEffects(' returns:A|B|C; creates:A; ', 288 testWithSideEffects(' returns:A|B|C; creates:A; ',
(...skipping 16 matching lines...) Expand all
284 test('gvn:false', expectedGvn: false); 305 test('gvn:false', expectedGvn: false);
285 test('returns:A;gvn:true', returns: ['A'], expectedGvn: true); 306 test('returns:A;gvn:true', returns: ['A'], expectedGvn: true);
286 test(' gvn : true ; returns:A;', returns: ['A'], expectedGvn: true); 307 test(' gvn : true ; returns:A;', returns: ['A'], expectedGvn: true);
287 test('gvn:true;returns:A;gvn:true', expectError: true); 308 test('gvn:true;returns:A;gvn:true', expectError: true);
288 309
289 test('gvn: true; new: true', expectError: true); 310 test('gvn: true; new: true', expectError: true);
290 test('gvn: true; new: false', expectedGvn: true, expectedNew: false); 311 test('gvn: true; new: false', expectedGvn: true, expectedNew: false);
291 test('gvn: false; new: true', expectedGvn: false, expectedNew: true); 312 test('gvn: false; new: true', expectedGvn: false, expectedNew: true);
292 test('gvn: false; new: false', expectedGvn: false, expectedNew: false); 313 test('gvn: false; new: false', expectedGvn: false, expectedNew: false);
293 } 314 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/native/behavior.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698