blob: e92b793bcca8533cea9e024d6f7ef90dd719ca40 [file] [log] [blame]
// Copyright (c) 2023, 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.
extension on Object {
int get setter => 42;
void set getter(int value) {}
}
extension type InlineClass(int it) {
test() {
var a = this + 2;
var b = -this;
var c = this[2];
var d = this[3] = 42;
var e1 = this.getter;
var e2 = getter;
var f1 = this.method;
var f2 = method;
var g1 = this.setter = 42;
var g2 = setter = 42;
this.setter = 87;
setter = 87;
int Function(int) h1 = this.genericMethod;
int Function(int) h2 = genericMethod;
this.setter; // Error, should not resolve to extension method.
setter; // Error, should not resolve to extension method.
this.getter = 42; // Error, should not resolve to extension method.
getter = 42; // Error, should not resolve to extension method.
var i1 = this.method();
var i2 = method();
num j1 = this.genericMethod(0);
num j2 = genericMethod(0);
var k1 = this.genericMethod(0);
var k2 = genericMethod(0);
var l1 = this.genericMethod<num>(0);
var l2 = genericMethod<num>(0);
var m = this();
var n1 = this.call();
var n2 = call();
}
int operator +(int other) => 42;
int operator -() => 87;
int operator [](int index) => 123;
void operator []=(int index, int value) {}
int get getter => 42;
int method() => 42;
void set setter(int value) {}
T genericMethod<T>(T t) => t;
int call() => 321;
}
test(InlineClass ic) {
var a = ic + 2;
var b = -ic;
var c = ic[2];
var d = ic[3] = 42;
var e = ic.getter;
var f = ic.method;
var g = ic.setter = 42;
ic.setter = 87;
int Function(int) h = ic.genericMethod;
ic.setter; // Error, should not resolve to extension method.
ic.getter = 42; // Error, should not resolve to extension method.
var i = ic.method();
num j = ic.genericMethod(0);
var k = ic.genericMethod(0);
var l = ic.genericMethod<num>(0);
var m = ic();
var n = ic.call();
}