| // Copyright (c) 2020, 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. |
| |
| class Class<T> { |
| Class<T> operator +(Class<T> other) => other; |
| |
| Class<T> operator -() => this; |
| |
| Class<T> operator [](int index) => this; |
| |
| operator []=(int index, Class<T> value) {} |
| |
| int method(double o) => 42; |
| } |
| |
| add( |
| num n, |
| int i, |
| double d, |
| Class<String> c, |
| dynamic dyn, |
| Never never, |
| String string, |
| ) { |
| print('InstanceInvocation'); |
| n + n; |
| n + i; |
| n + d; |
| n + dyn; |
| |
| print('InstanceInvocation'); |
| i + n; |
| i + i; |
| i + d; |
| i + dyn; |
| |
| print('InstanceInvocation'); |
| d + n; |
| d + i; |
| d + d; |
| i + dyn; |
| |
| print('InstanceInvocation'); |
| c + c; |
| c + dyn; |
| |
| print('DynamicInvocation'); |
| dyn + n; |
| |
| print('DynamicInvocation (Never)'); |
| never + n; |
| |
| print('DynamicInvocation (Invalid)'); |
| string - 42; |
| } |
| |
| unaryMinus( |
| num n, |
| int i, |
| double d, |
| Class<String> c, |
| dynamic dyn, |
| Never never, |
| String string, |
| ) { |
| print('InstanceInvocation'); |
| -n; |
| -i; |
| -d; |
| -c; |
| |
| print('DynamicInvocation'); |
| -dyn; |
| |
| print('DynamicInvocation (Never)'); |
| -never; |
| |
| print('DynamicInvocation (Invalid)'); |
| -c.method(); |
| |
| print('DynamicInvocation (Unresolved)'); |
| -string; |
| } |
| |
| indexGet( |
| List<int> list, |
| Map<String, double> map, |
| Class<String> c, |
| dynamic dyn, |
| Never never, |
| String string, |
| ) { |
| print('InstanceInvocation'); |
| list[0]; |
| map['foo']; |
| c[0]; |
| |
| print('DynamicInvocation'); |
| dyn[0]; |
| |
| print('DynamicInvocation (Never)'); |
| never[0]; |
| |
| print('DynamicInvocation (Invalid)'); |
| c.method()[0]; |
| |
| print('DynamicInvocation (Unresolved)'); |
| string[0]; |
| } |
| |
| indexSet( |
| List<int> list, |
| Map<String, double> map, |
| Class<String> c, |
| dynamic dyn, |
| Never never, |
| ) { |
| print('InstanceInvocation'); |
| list[0] = 42; |
| map['foo'] = 0.5; |
| c[0] = c; |
| |
| print('DynamicInvocation'); |
| dyn[0] = 42; |
| |
| print('DynamicInvocation (Never)'); |
| never[0] = 42; |
| |
| print('DynamicInvocation (Invalid)'); |
| c.method()[0] = 42; |
| |
| print('DynamicInvocation (Unresolved)'); |
| string[0] = 42; |
| } |
| |
| compound( |
| List<int> list, |
| Map<String, double> map, |
| Class<String> c, |
| dynamic dyn, |
| Never never, |
| ) { |
| print('InstanceInvocation'); |
| list[0] += 42; |
| map['foo'] += 0.5; |
| c[0] += c; |
| |
| print('DynamicInvocation'); |
| dyn[0] += 42; |
| |
| print('DynamicInvocation (Never)'); |
| never[0] += 42; |
| |
| print('DynamicInvocation (Invalid)'); |
| c.method()[0] += 42; |
| |
| print('DynamicInvocation (Unresolved)'); |
| string[0] += 42; |
| } |
| |
| main() {} |