library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/super_parameters/issue48714.dart:13:18: Error: Can't have modifier 'const' here.
// Try removing 'const'.
//   Extended.three(const super.value); // Error.
//                  ^^^^^
//
// pkg/front_end/testcases/super_parameters/issue48714.dart:12:16: Error: Can't have modifier 'var' here.
// Try removing 'var'.
//   Extended.two(var super.value); // Error.
//                ^^^
//
import self as self;
import "dart:core" as core;

class Base extends core::Object {
  field core::int value;
  constructor •(core::int value) → self::Base
    : self::Base::value = value, super core::Object::•()
    ;
}
class Extended extends self::Base {
  constructor one(final core::int value) → self::Extended
    : super self::Base::•(value)
    ;
  constructor two(core::int value) → self::Extended
    : super self::Base::•(value)
    ;
  constructor three(core::int value) → self::Extended
    : super self::Base::•(value)
    ;
}
static method main() → dynamic {}
