Files
sdk/tests/language_2/issue34404_flutter_modified_test.dart
T
Paul Berry 46e5954b0a Turn on and fix mixin type inference checks when not in "supermixin" mode.
Now that we have an explicit syntax for mixins that is available all
the time, we have to do mixin inference error checking all the time,
not just when the "--supermixin" flag is supplied.

This required fixing several minor bugs:

- ErrorVerifier._checkForMixinSuperInvokedMembers did not properly
  handle a mixinElement argument that was a ClassElementHandle.

- ErrorVerifier._checkMixinInference wasn't using the actual
  substituted mixin types, causing errors to be wrongly reported when
  a class declaration had multiple inferred mixins (this was the root
  cause of #34404).

- Type names in "with" clauses in the resolved AST weren't properly
  reflecting the mixin type arguments that had been inferred.

Fixes #34404.

Change-Id: Ia773233c66f8d9ab778f207689c73922e9e3a880
Reviewed-on: https://dart-review.googlesource.com/75792
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-09-21 01:06:25 +00:00

34 lines
1.1 KiB
Dart

// 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.
// This test case is a reduction of some Flutter code, modified to use the new
// mixin syntax. We wish to verify that the class _DismissibleState doesn't
// have any type inference errors.
class _DismissibleState extends State<Dismissible>
with TickerProviderStateMixin, AutomaticKeepAliveClientMixin {}
abstract class State<T extends StatefulWidget> extends Diagnosticable {}
abstract class StatefulWidget extends Widget {}
abstract class Widget extends DiagnosticableTree {}
abstract class DiagnosticableTree extends Diagnosticable {}
abstract class Diagnosticable {}
class Dismissible extends StatefulWidget {}
mixin TickerProviderStateMixin<T extends StatefulWidget> on State<T>
implements TickerProvider {}
abstract class TickerProvider {}
mixin AutomaticKeepAliveClientMixin<T extends StatefulWidget> on State<T> {}
main() {
new _DismissibleState();
}