Files
sdk/tests/web/native/subclassing_3_test.dart
Jake Macdonald 737b6f7356 [flip-modifiers]: flip the flags for sealed classes and class modifiers
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>
2023-03-10 05:27:57 +00:00

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));
}