// Copyright (c) 2011, 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.

// @dart = 2.9

import "package:expect/expect.dart";

// Test class literal expressions.

class Class {
  static fisk() => 42;
}

foo(x) {}

main() {
  // Verify that dereferencing a class literal is a compile-time error.
  Class();
  Class[0]; //# 02: compile-time error
  var x = Class();
  var y = Class[0]; //# 04: compile-time error
  var z = Class[0].field; //# 05: compile-time error
  var w = Class[0].method(); //# 06: compile-time error
  foo(Class());
  foo(Class[0]); //# 08: compile-time error
  foo(Class[0].field); //# 09: compile-time error
  foo(Class[0].method()); //# 10: compile-time error
  Class[0] = 91; //# 11: compile-time error
  Class++; //# 12: compile-time error
  ++Class; //# 13: compile-time error
  Class[0] += 3; //# 14: compile-time error
  ++Class[0]; //# 15: compile-time error
  Class[0]++; //# 16: compile-time error
  Class.method(); //# 17: compile-time error
  Class.field; //# 18: compile-time error
  var p = Class.method(); //# 19: compile-time error
  var q = Class.field; //# 20: compile-time error
  foo(Class.method()); //# 21: compile-time error
  foo(Class.field); //# 22: compile-time error
  Class / 3; //# 23: compile-time error
  Class += 3; //# 24: compile-time error
  Class.toString(); //# 25: compile-time error
}
