library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/constants/js_semantics/issue46123b.dart:13:17: Error: Constant evaluation error:
// test() => const ParallaxOptions();
//                 ^
// pkg/front_end/testcases/general/constants/js_semantics/issue46123b.dart:13:17: Context: External constructors can't be evaluated in constant expressions.
// test() => const ParallaxOptions();
//                 ^
//
import self as self;
import "package:js/js.dart" as js;
import "dart:core" as core;

import "package:js/js.dart";

@#C2
@#C3
class ParallaxOptions extends core::Object /*hasConstConstructor*/  {
  external const constructor •() → self::ParallaxOptions
    : super core::Object::•()
    ;
}
static method test() → dynamic
  return invalid-expression "External constructors can't be evaluated in constant expressions.";
static method main() → dynamic {}

constants  {
  #C1 = null
  #C2 = js::JS {name:#C1}
  #C3 = js::_Anonymous {}
}


Constructor coverage from constants:
org-dartlang-testcase:///issue46123b.dart:
- JS. (from org-dartlang-testcase-sdk:///pkg/js/lib/js.dart:21:9)
- Object. (from org-dartlang-sdk:///lib/core/object.dart:25:9)
