| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |