mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 10:49:00 +00:00
[kernel] CloneVisitor should preserve isDefault on switch cases.
Fixes https://github.com/dart-lang/sdk/issues/32971 Change-Id: I16bf688080ee60853f5de449ead3e7feaec37fc2 Reviewed-on: https://dart-review.googlesource.com/52602 Commit-Queue: Vyacheslav Egorov <vegorov@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
This commit is contained in:
parent
613c6d066c
commit
328163bba9
2 changed files with 38 additions and 1 deletions
|
@ -345,7 +345,8 @@ class CloneVisitor implements TreeVisitor {
|
|||
switchCases[switchCase] = new SwitchCase(
|
||||
switchCase.expressions.map(clone).toList(),
|
||||
new List<int>.from(switchCase.expressionOffsets),
|
||||
null);
|
||||
null,
|
||||
isDefault: switchCase.isDefault);
|
||||
}
|
||||
return new SwitchStatement(
|
||||
clone(node.expression), node.cases.map(clone).toList());
|
||||
|
|
36
tests/language_2/vm/regress_32971_test.dart
Normal file
36
tests/language_2/vm/regress_32971_test.dart
Normal file
|
@ -0,0 +1,36 @@
|
|||
// Copyright (c) 2018, 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.
|
||||
|
||||
// Test verifying that default switch cast is cloned correctly by the
|
||||
// mixin transformation.
|
||||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
void main() {
|
||||
final o = new A();
|
||||
Expect.isTrue(o.f());
|
||||
Expect.isTrue(o.g());
|
||||
}
|
||||
|
||||
class A extends B with M {}
|
||||
|
||||
class B {
|
||||
bool f() {
|
||||
switch (true) {
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
class M {
|
||||
bool g() {
|
||||
switch (true) {
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue