library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:32:18: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// class D1 extends TAlias<A> {}
//                  ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:34:19: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// class D1a extends prefix.TAlias<A> {}
//                   ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:36:19: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// class D1b extends TAlias<prefix.A> {}
//                   ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:38:21: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// class D2 implements TAlias<A> {}
//                     ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:40:19: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// class D3 = A with TAlias<B>;
//                   ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:42:32: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// class D4 = A with B implements TAlias<C>;
//                                ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:44:25: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// class D5 extends A with TAlias<B> {}
//                         ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:46:13: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// mixin N1 on TAlias<A> {}
//             ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:48:14: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// mixin N1a on prefix.TAlias<A> {}
//              ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:50:14: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// mixin N1b on TAlias<prefix.A> {}
//              ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:52:16: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// mixin N2 on A, TAlias<B> {}
//                ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:54:26: Error: Can't use a typedef denoting a type variable as a constructor, nor for a static member access.
// mixin N3 on A implements TAlias<B> {}
//                          ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:16: Context: This is the type variable ultimately denoted.
// typedef TAlias<T> = T?;
//                ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:40:7: Error: The type 'TAlias' can't be mixed in.
// class D3 = A with TAlias<B>;
//       ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:44:7: Error: The type 'TAlias' can't be mixed in.
// class D5 extends A with TAlias<B> {}
//       ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:16:18: Error: The type 'AAlias' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class C1 extends AAlias {}
//                  ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:11:9: Context: The issue arises via this type alias.
// typedef AAlias = A?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:18:21: Error: The type 'AAlias' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class C2 implements AAlias {}
//                     ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:11:9: Context: The issue arises via this type alias.
// typedef AAlias = A?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:20:19: Error: The type 'BAlias' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class C3 = A with BAlias;
//                   ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:12:9: Context: The issue arises via this type alias.
// typedef BAlias = B?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:22:32: Error: The type 'CAlias' which is an alias of 'C?' can't be used as supertype because it is nullable.
//  - 'C' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class C4 = A with B implements CAlias;
//                                ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:13:9: Context: The issue arises via this type alias.
// typedef CAlias = C?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:24:25: Error: The type 'BAlias' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class C5 extends A with BAlias {}
//                         ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:12:9: Context: The issue arises via this type alias.
// typedef BAlias = B?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:26:13: Error: The type 'AAlias' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin M1 on AAlias {}
//             ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:11:9: Context: The issue arises via this type alias.
// typedef AAlias = A?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:28:16: Error: The type 'BAlias' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin M2 on A, BAlias {}
//                ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:12:9: Context: The issue arises via this type alias.
// typedef BAlias = B?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:30:26: Error: The type 'BAlias' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin M3 on A implements BAlias {}
//                          ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:12:9: Context: The issue arises via this type alias.
// typedef BAlias = B?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:32:18: Error: The type 'TAlias<A>' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class D1 extends TAlias<A> {}
//                  ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:34:19: Error: The type 'prefix.TAlias<A>' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class D1a extends prefix.TAlias<A> {}
//                   ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:36:19: Error: The type 'TAlias<prefix.A>' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class D1b extends TAlias<prefix.A> {}
//                   ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:38:21: Error: The type 'TAlias<A>' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class D2 implements TAlias<A> {}
//                     ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:40:19: Error: The type 'TAlias<B>' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class D3 = A with TAlias<B>;
//                   ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:42:32: Error: The type 'TAlias<C>' which is an alias of 'C?' can't be used as supertype because it is nullable.
//  - 'C' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class D4 = A with B implements TAlias<C>;
//                                ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:44:25: Error: The type 'TAlias<B>' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// class D5 extends A with TAlias<B> {}
//                         ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:46:13: Error: The type 'TAlias<A>' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin N1 on TAlias<A> {}
//             ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:48:14: Error: The type 'prefix.TAlias<A>' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin N1a on prefix.TAlias<A> {}
//              ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:50:14: Error: The type 'TAlias<prefix.A>' which is an alias of 'A?' can't be used as supertype because it is nullable.
//  - 'A' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin N1b on TAlias<prefix.A> {}
//              ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:52:16: Error: The type 'TAlias<B>' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin N2 on A, TAlias<B> {}
//                ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:54:26: Error: The type 'TAlias<B>' which is an alias of 'B?' can't be used as supertype because it is nullable.
//  - 'B' is from 'pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart'.
// mixin N3 on A implements TAlias<B> {}
//                          ^
// pkg/front_end/testcases/nonfunction_type_aliases/nullable_supertypes.dart:14:9: Context: The issue arises via this type alias.
// typedef TAlias<T> = T?;
//         ^
//
import self as self;
import "dart:core" as core;

import "org-dartlang-testcase:///nullable_supertypes.dart" as prefix;

typedef AAlias = self::A?;
typedef BAlias = self::B?;
typedef CAlias = self::C?;
typedef TAlias<T extends core::Object? = dynamic> = T?;
class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
class B extends core::Object {
  synthetic constructor •() → self::B
    : super core::Object::•()
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
}
class C1 extends core::Object {
  synthetic constructor •() → self::C1
    : super core::Object::•()
    ;
}
class C2 extends core::Object {
  synthetic constructor •() → self::C2
    : super core::Object::•()
    ;
}
class C3 extends self::A {
  synthetic constructor •() → self::C3
    : super self::A::•()
    ;
}
class C4 = self::A with self::B {
  synthetic constructor •() → self::C4
    : super self::A::•()
    ;
}
abstract class _C5&A&BAlias extends self::A /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C5&A&BAlias
    : super self::A::•()
    ;
}
class C5 extends self::_C5&A&BAlias {
  synthetic constructor •() → self::C5
    : super self::_C5&A&BAlias::•()
    ;
}
abstract class M1 extends core::Object /*isMixinDeclaration*/  {
}
abstract class _M2&A&BAlias extends core::Object implements self::A /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_M2&A&BAlias
    : super core::Object::•()
    ;
}
abstract class M2 extends self::_M2&A&BAlias /*isMixinDeclaration*/  {
}
abstract class M3 extends self::A /*isMixinDeclaration*/  {
}
class D1 extends core::Object {
  synthetic constructor •() → self::D1
    : super core::Object::•()
    ;
}
class D1a extends core::Object {
  synthetic constructor •() → self::D1a
    : super core::Object::•()
    ;
}
class D1b extends core::Object {
  synthetic constructor •() → self::D1b
    : super core::Object::•()
    ;
}
class D2 extends core::Object {
  synthetic constructor •() → self::D2
    : super core::Object::•()
    ;
}
class D3 extends self::A {
  synthetic constructor •() → self::D3
    : super self::A::•()
    ;
}
class D4 = self::A with self::B {
  synthetic constructor •() → self::D4
    : super self::A::•()
    ;
}
abstract class _D5&A&TAlias extends self::A /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_D5&A&TAlias
    : super self::A::•()
    ;
}
class D5 extends self::_D5&A&TAlias {
  synthetic constructor •() → self::D5
    : super self::_D5&A&TAlias::•()
    ;
}
abstract class N1 extends core::Object /*isMixinDeclaration*/  {
}
abstract class N1a extends core::Object /*isMixinDeclaration*/  {
}
abstract class N1b extends core::Object /*isMixinDeclaration*/  {
}
abstract class _N2&A&TAlias extends core::Object implements self::A /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_N2&A&TAlias
    : super core::Object::•()
    ;
}
abstract class N2 extends self::_N2&A&TAlias /*isMixinDeclaration*/  {
}
abstract class N3 extends self::A /*isMixinDeclaration*/  {
}
static method main() → dynamic {}
