mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 09:43:57 +00:00
[3.0 alpha] Move AbstractClassInstantiationError
to dart:mirrors
Split off https://dart-review.googlesource.com/c/sdk/+/259041 so that the VM changes can be landed separately. TEST=tests/lib/mirrors/instantiate_abstract_class_test.dart Bug: https://github.com/dart-lang/sdk/issues/49529 Change-Id: Ic06dee0dfeaea64d9d9ffd9511ec66d9d0837e7e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/274383 Reviewed-by: Michael Thomsen <mit@google.com> Reviewed-by: Tess Strickland <sstrickl@google.com> Commit-Queue: Daco Harkes <dacoharkes@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
parent
5b966a07d3
commit
56e581aa34
|
@ -2825,8 +2825,6 @@ abstract class pragma {
|
|||
Object options;
|
||||
}
|
||||
|
||||
class AbstractClassInstantiationError {}
|
||||
|
||||
class NoSuchMethodError {
|
||||
factory NoSuchMethodError.withInvocation(receiver, invocation) => throw '';
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ test() {
|
|||
threw = true;
|
||||
new B();
|
||||
threw = false;
|
||||
} on AbstractClassInstantiationError catch (_) {
|
||||
} on Error catch (_) {
|
||||
// Ignored.
|
||||
}
|
||||
if (!threw) {
|
||||
|
|
|
@ -151,7 +151,7 @@ static method test() → dynamic {
|
|||
invalid-expression "The class 'B' is abstract and can't be instantiated.";
|
||||
threw = false;
|
||||
}
|
||||
on core::AbstractClassInstantiationError catch(final core::AbstractClassInstantiationError _) {
|
||||
on core::Error catch(final core::Error _) {
|
||||
}
|
||||
if(!threw) {
|
||||
throw "Expected an error above.";
|
||||
|
|
|
@ -151,7 +151,7 @@ static method test() → dynamic {
|
|||
invalid-expression "The class 'B' is abstract and can't be instantiated.";
|
||||
threw = false;
|
||||
}
|
||||
on core::AbstractClassInstantiationError catch(final core::AbstractClassInstantiationError _) {
|
||||
on core::Error catch(final core::Error _) {
|
||||
}
|
||||
if(!threw) {
|
||||
throw "Expected an error above.";
|
||||
|
|
|
@ -151,7 +151,7 @@ static method test() → dynamic {
|
|||
invalid-expression "The class 'B' is abstract and can't be instantiated.";
|
||||
threw = false;
|
||||
}
|
||||
on core::AbstractClassInstantiationError catch(final core::AbstractClassInstantiationError _) {
|
||||
on core::Error catch(final core::Error _) {
|
||||
}
|
||||
if(!threw) {
|
||||
throw "Expected an error above.";
|
||||
|
|
|
@ -111,7 +111,6 @@ additionalExports = (core::Deprecated,
|
|||
core::RangeError,
|
||||
core::IndexError,
|
||||
core::FallThroughError,
|
||||
core::AbstractClassInstantiationError,
|
||||
core::NoSuchMethodError,
|
||||
core::UnsupportedError,
|
||||
core::UnimplementedError,
|
||||
|
|
|
@ -46,7 +46,6 @@ additionalExports = (core::Deprecated,
|
|||
core::RangeError,
|
||||
core::IndexError,
|
||||
core::FallThroughError,
|
||||
core::AbstractClassInstantiationError,
|
||||
core::NoSuchMethodError,
|
||||
core::UnsupportedError,
|
||||
core::UnimplementedError,
|
||||
|
|
|
@ -107,7 +107,6 @@ additionalExports = (core::Deprecated,
|
|||
core::RangeError,
|
||||
core::IndexError,
|
||||
core::FallThroughError,
|
||||
core::AbstractClassInstantiationError,
|
||||
core::NoSuchMethodError,
|
||||
core::UnsupportedError,
|
||||
core::UnimplementedError,
|
||||
|
|
|
@ -11,7 +11,6 @@ additionalExports = (asy::Future,
|
|||
core::identityHashCode,
|
||||
core::print,
|
||||
core::Comparator,
|
||||
core::AbstractClassInstantiationError,
|
||||
core::ArgumentError,
|
||||
core::AssertionError,
|
||||
core::BidirectionalIterator,
|
||||
|
|
|
@ -11,7 +11,6 @@ additionalExports = (asy::Future,
|
|||
core::identityHashCode,
|
||||
core::print,
|
||||
core::Comparator,
|
||||
core::AbstractClassInstantiationError,
|
||||
core::ArgumentError,
|
||||
core::AssertionError,
|
||||
core::BidirectionalIterator,
|
||||
|
|
|
@ -67,9 +67,6 @@ IndexError? var51 = IndexError.withLength(14, 2,
|
|||
indexable: 36, name: 'V(', message: '9Jf!0\u2665');
|
||||
FallThroughError var52 = FallThroughError();
|
||||
FallThroughError? var53 = FallThroughError();
|
||||
AbstractClassInstantiationError var54 = AbstractClassInstantiationError('J!');
|
||||
AbstractClassInstantiationError? var55 =
|
||||
AbstractClassInstantiationError('L48ynpV');
|
||||
UnsupportedError var56 = UnsupportedError('5txzg');
|
||||
UnsupportedError? var57 = UnsupportedError('W4vVdfv');
|
||||
UnimplementedError var58 = UnimplementedError('pK00TI\u2665');
|
||||
|
@ -283,5 +280,5 @@ main() {
|
|||
foo1_Extension0();
|
||||
|
||||
print(
|
||||
'$var0\n$var9\n$var11\n$var12\n$var13\n$var14\n$var15\n$var16\n$var17\n$var18\n$var19\n$var20\n$var21\n$var22\n$var23\n$var24\n$var25\n$var26\n$var27\n$var28\n$var29\n$var30\n$var31\n$var32\n$var33\n$var34\n$var35\n$var36\n$var37\n$var38\n$var39\n$var40\n$var41\n$var42\n$var43\n$var44\n$var45\n$var46\n$var47\n$var48\n$var49\n$var50\n$var51\n$var52\n$var53\n$var54\n$var55\n$var56\n$var57\n$var58\n$var59\n$var60\n$var61\n$var62\n$var63\n$var64\n$var65\n$var66\n$var67\n$var68\n$var69\n$var70\n$var71\n$var72\n$var73\n$var74\n$var75\n$var76\n$var77\n$var78\n$var79\n$var80\n$var81\n$var82\n$var83\n$var84\n$var85\n$var86\n$var87\n$var88\n$var89\n$var90\n$var91\n$var92\n$var93\n$var94\n$var95\n$var96\n$var97\n$var98\n$var99\n$var100\n$var101\n$var102\n$var103\n$var104\n$var105\n$var106\n$var107\n$var108\n$var109\n$var110\n$var111\n$var112\n$var113\n$var114\n$var115\n$var116\n$var117\n$var118\n$var119\n$var120\n$var121\n$var122\n$var123\n$var124\n$var125\n$var126\n$var127\n$var128\n$var129\n$var130\n$var131\n$var132\n');
|
||||
'$var0\n$var9\n$var11\n$var12\n$var13\n$var14\n$var15\n$var16\n$var17\n$var18\n$var19\n$var20\n$var21\n$var22\n$var23\n$var24\n$var25\n$var26\n$var27\n$var28\n$var29\n$var30\n$var31\n$var32\n$var33\n$var34\n$var35\n$var36\n$var37\n$var38\n$var39\n$var40\n$var41\n$var42\n$var43\n$var44\n$var45\n$var46\n$var47\n$var48\n$var49\n$var50\n$var51\n$var52\n$var53\n$var56\n$var57\n$var58\n$var59\n$var60\n$var61\n$var62\n$var63\n$var64\n$var65\n$var66\n$var67\n$var68\n$var69\n$var70\n$var71\n$var72\n$var73\n$var74\n$var75\n$var76\n$var77\n$var78\n$var79\n$var80\n$var81\n$var82\n$var83\n$var84\n$var85\n$var86\n$var87\n$var88\n$var89\n$var90\n$var91\n$var92\n$var93\n$var94\n$var95\n$var96\n$var97\n$var98\n$var99\n$var100\n$var101\n$var102\n$var103\n$var104\n$var105\n$var106\n$var107\n$var108\n$var109\n$var110\n$var111\n$var112\n$var113\n$var114\n$var115\n$var116\n$var117\n$var118\n$var119\n$var120\n$var121\n$var122\n$var123\n$var124\n$var125\n$var126\n$var127\n$var128\n$var129\n$var130\n$var131\n$var132\n');
|
||||
}
|
||||
|
|
|
@ -56,7 +56,6 @@ RangeError var26 =
|
|||
IndexError var27 =
|
||||
IndexError.withLength(38, 13, indexable: 29, name: 'R1Z', message: 'VnR7');
|
||||
FallThroughError var28 = new FallThroughError();
|
||||
AbstractClassInstantiationError var29 = AbstractClassInstantiationError('Sq');
|
||||
UnsupportedError var30 = UnsupportedError('(OXv');
|
||||
UnimplementedError var31 = UnimplementedError('Dt)F@\u2665');
|
||||
StateError var32 = StateError('y');
|
||||
|
@ -1300,7 +1299,7 @@ main() {
|
|||
}
|
||||
try {
|
||||
print(
|
||||
'$var0\n$var1\n$var2\n$var3\n$var4\n$var5\n$var6\n$var7\n$var8\n$var9\n$var10\n$var11\n$var12\n$var13\n$var14\n$var15\n$var16\n$var17\n$var18\n$var19\n$var20\n$var21\n$var22\n$var23\n$var24\n$var25\n$var26\n$var27\n$var28\n$var29\n$var30\n$var31\n$var32\n$var33\n$var34\n$var35\n$var36\n$var37\n$var38\n$var39\n$var40\n$var41\n$var42\n$var43\n$var44\n$var45\n$var46\n$var47\n$var48\n$var49\n$var50\n$var51\n$var52\n$var53\n$var54\n$var55\n$var56\n$var57\n$var58\n$var59\n$var60\n$var61\n$var62\n$var63\n$var64\n$var65\n$var66\n$var67\n$var68\n$var69\n$var70\n$var71\n$var72\n$var73\n$var74\n$var75\n');
|
||||
'$var0\n$var1\n$var2\n$var3\n$var4\n$var5\n$var6\n$var7\n$var8\n$var9\n$var10\n$var11\n$var12\n$var13\n$var14\n$var15\n$var16\n$var17\n$var18\n$var19\n$var20\n$var21\n$var22\n$var23\n$var24\n$var25\n$var26\n$var27\n$var28\n$var30\n$var31\n$var32\n$var33\n$var34\n$var35\n$var36\n$var37\n$var38\n$var39\n$var40\n$var41\n$var42\n$var43\n$var44\n$var45\n$var46\n$var47\n$var48\n$var49\n$var50\n$var51\n$var52\n$var53\n$var54\n$var55\n$var56\n$var57\n$var58\n$var59\n$var60\n$var61\n$var62\n$var63\n$var64\n$var65\n$var66\n$var67\n$var68\n$var69\n$var70\n$var71\n$var72\n$var73\n$var74\n$var75\n');
|
||||
} on OutOfMemoryError {
|
||||
exit(254);
|
||||
} catch (e, st) {
|
||||
|
|
|
@ -1153,10 +1153,14 @@ ObjectPtr Exceptions::Create(ExceptionType type, const Array& arguments) {
|
|||
constructor_name = &Symbols::DotCreate();
|
||||
break;
|
||||
case kAbstractClassInstantiation:
|
||||
library = Library::CoreLibrary();
|
||||
#if defined(DART_PRECOMPILED_RUNTIME)
|
||||
UNREACHABLE();
|
||||
#else
|
||||
library = Library::MirrorsLibrary();
|
||||
class_name = &Symbols::AbstractClassInstantiationError();
|
||||
constructor_name = &Symbols::DotCreate();
|
||||
break;
|
||||
#endif
|
||||
case kCyclicInitializationError:
|
||||
library = Library::CoreLibrary();
|
||||
class_name = &Symbols::CyclicInitializationError();
|
||||
|
|
|
@ -366,12 +366,6 @@ class FallThroughError {
|
|||
String toString() => super.toString();
|
||||
}
|
||||
|
||||
@patch
|
||||
class AbstractClassInstantiationError {
|
||||
@patch
|
||||
String toString() => "Cannot instantiate abstract class: '$_className'";
|
||||
}
|
||||
|
||||
// Patch for DateTime implementation.
|
||||
@patch
|
||||
class DateTime {
|
||||
|
|
|
@ -530,10 +530,6 @@ throwRuntimeError(message) {
|
|||
throw RuntimeError(message);
|
||||
}
|
||||
|
||||
throwAbstractClassInstantiationError(className) {
|
||||
throw AbstractClassInstantiationError(className);
|
||||
}
|
||||
|
||||
throwConcurrentModificationError(collection) {
|
||||
throw ConcurrentModificationError(collection);
|
||||
}
|
||||
|
|
|
@ -253,12 +253,6 @@ class FallThroughError {
|
|||
String toString() => super.toString();
|
||||
}
|
||||
|
||||
@patch
|
||||
class AbstractClassInstantiationError {
|
||||
@patch
|
||||
String toString() => "Cannot instantiate abstract class: '$_className'";
|
||||
}
|
||||
|
||||
// Patch for DateTime implementation.
|
||||
@patch
|
||||
class DateTime {
|
||||
|
|
|
@ -176,24 +176,6 @@ class CyclicInitializationError {
|
|||
}
|
||||
}
|
||||
|
||||
@patch
|
||||
class AbstractClassInstantiationError {
|
||||
@pragma("vm:entry-point")
|
||||
AbstractClassInstantiationError._create(
|
||||
this._className, this._url, this._line);
|
||||
|
||||
@patch
|
||||
String toString() {
|
||||
return "Cannot instantiate abstract class $_className: "
|
||||
"_url '$_url' line $_line";
|
||||
}
|
||||
|
||||
// These new fields cannot be declared final, because a constructor exists
|
||||
// in the original version of this patched class.
|
||||
String? _url;
|
||||
int _line = 0;
|
||||
}
|
||||
|
||||
@patch
|
||||
class NoSuchMethodError {
|
||||
final Object? _receiver;
|
||||
|
|
|
@ -91,3 +91,21 @@ class MirrorSystem {
|
|||
@pragma("vm:external-name", "Mirrors_mangleName")
|
||||
external static _mangleName(String name, _MirrorReference lib);
|
||||
}
|
||||
|
||||
@patch
|
||||
class AbstractClassInstantiationError {
|
||||
@pragma("vm:entry-point")
|
||||
AbstractClassInstantiationError._create(
|
||||
this._className, this._url, this._line);
|
||||
|
||||
@patch
|
||||
String toString() {
|
||||
return "Cannot instantiate abstract class $_className: "
|
||||
"_url '$_url' line $_line";
|
||||
}
|
||||
|
||||
// These new fields cannot be declared final, because a constructor exists
|
||||
// in the original version of this patched class.
|
||||
String? _url;
|
||||
int _line = 0;
|
||||
}
|
||||
|
|
|
@ -531,18 +531,6 @@ class FallThroughError extends Error {
|
|||
external String toString();
|
||||
}
|
||||
|
||||
/// Error thrown when trying to instantiate an abstract class.
|
||||
///
|
||||
/// No longer used in Dart 2 where it has become a compile-time error
|
||||
/// to call the constructor of an abstract class.
|
||||
@Deprecated("No longer relevant in Dart 2.0")
|
||||
class AbstractClassInstantiationError extends Error {
|
||||
final String _className;
|
||||
AbstractClassInstantiationError(String className) : _className = className;
|
||||
|
||||
external String toString();
|
||||
}
|
||||
|
||||
/// Error thrown when a particular method invocation is not possible.
|
||||
///
|
||||
/// This error is thrown by the default implementation of `noSuchMethod`
|
||||
|
|
|
@ -60,8 +60,13 @@ import "dart:core";
|
|||
import 'dart:async' show Future;
|
||||
import "dart:_internal" show Since;
|
||||
|
||||
// TODO: Move AbstractClassInstantiationError here when removed from dart:core.
|
||||
export "dart:core" show AbstractClassInstantiationError;
|
||||
/// Error thrown when trying to instantiate an abstract class.
|
||||
class AbstractClassInstantiationError extends Error {
|
||||
final String _className;
|
||||
AbstractClassInstantiationError(String className) : _className = className;
|
||||
|
||||
external String toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* A [MirrorSystem] is the main interface used to reflect on a set of
|
||||
|
|
Loading…
Reference in a new issue