737b6f7356
Includes several updates to tests that needed to land with this flip, as well as some other tests that needed to be updated and could land separately, but are being included here to expedite things. Removes some unnecessary experimental release versions, as well as bringing up to date the generated files, which were previously out of sync with the yaml file. TEST=bots Change-Id: I71a86d7a86190069b504bd27d687f62b97a7251e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285080 Commit-Queue: Jake Macdonald <jakemac@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Nate Bosch <nbosch@google.com> Reviewed-by: Samuel Rawlins <srawlins@google.com>
56 lines
1.2 KiB
Dart
56 lines
1.2 KiB
Dart
// Copyright (c) 2013, 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.
|
|
|
|
import 'native_testing.dart';
|
|
import 'dart:_js_helper' show setNativeSubclassDispatchRecord;
|
|
import 'dart:_interceptors' show Interceptor, findInterceptorForType;
|
|
|
|
// Test calling convention of methods introduced on subclasses of native
|
|
// class of mixin.
|
|
|
|
doFoo(r, x) => '$x,${r.oof()},${r.miz()}';
|
|
|
|
mixin M {
|
|
miz() => 'M';
|
|
}
|
|
|
|
@Native("N")
|
|
class N {
|
|
foo(x) => (doFoo)(this, x);
|
|
}
|
|
|
|
class A extends N {}
|
|
|
|
class B extends A with M {
|
|
// [oof] is introduced only on this subclass of a native class. It should
|
|
// have interceptor calling convention.
|
|
oof() => 'B';
|
|
// [miz] is introduced only on the mixin-application A+M.
|
|
}
|
|
|
|
B makeB() native;
|
|
|
|
@Creates('=Object')
|
|
getBPrototype() native;
|
|
|
|
void setup() {
|
|
JS('', r"""
|
|
(function(){
|
|
function B() {}
|
|
self.makeB = function(){return new B();};
|
|
|
|
self.getBPrototype = function(){return B.prototype;};
|
|
})()""");
|
|
}
|
|
|
|
main() {
|
|
nativeTesting();
|
|
setup();
|
|
|
|
setNativeSubclassDispatchRecord(getBPrototype(), findInterceptorForType(B));
|
|
|
|
B b = makeB();
|
|
Expect.equals('1,B,M', b.foo(1));
|
|
}
|