Files
sdk/pkg/front_end/testcases/patterns/cache_lookups.dart
T
Johnni Winther 68c326f455 [cfe] Refactor pattern matching generation
This enables caching during matching.

Closes https://github.com/dart-lang/sdk/issues/50934
Closes https://github.com/dart-lang/sdk/issues/50987

Change-Id: Iae1d8e0989029a193ba77f58338890d9bfa0c09f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279384
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2023-01-25 08:33:38 +00:00

41 lines
866 B
Dart

// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'cache_lookups_lib.dart';
int counter = 0;
class Class {
int get field {
counter++;
return 42;
}
}
test(o) {
switch (o) {
case Class(field: 0) || Class(field: 1):
print('Class');
case [int a, 1] || [int a, 2]:
print('List');
}
}
main() {
expect(0, counter);
test(null);
expect(0, counter);
test(new Class());
expect(1, counter);
test(new CustomList([0, 1]));
expect(2, counter);
test(new CustomList([0, 2]));
expect(3, counter);
test(new CustomList([0, 3]));
expect(4, counter);
}
expect(expected, actual) {
if (expected != actual) throw 'Expected $expected, actual $actual';
}