mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 09:31:58 +00:00
[cfe] Implement primitive equality
Closes #51045 Closes #51565 Closes #51566 Closes #51688 Closes #51800 Change-Id: I4a679ef9cf496a22f4fdc2047a2dc4753e796e2b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290320 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
parent
f39f8f2f61
commit
94c165d189
|
@ -467,6 +467,72 @@ Message _withArgumentsConstEvalElementImplementsEqual(
|
|||
arguments: {'constant': _constant});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<
|
||||
Message Function(Constant _constant, bool isNonNullableByDefault)>
|
||||
templateConstEvalElementNotPrimitiveEquality = const Template<
|
||||
Message Function(Constant _constant, bool isNonNullableByDefault)>(
|
||||
problemMessageTemplate:
|
||||
r"""The element '#constant' does not have a primitive equality.""",
|
||||
withArguments: _withArgumentsConstEvalElementNotPrimitiveEquality);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<Message Function(Constant _constant, bool isNonNullableByDefault)>
|
||||
codeConstEvalElementNotPrimitiveEquality = const Code<
|
||||
Message Function(Constant _constant, bool isNonNullableByDefault)>(
|
||||
"ConstEvalElementNotPrimitiveEquality",
|
||||
);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
Message _withArgumentsConstEvalElementNotPrimitiveEquality(
|
||||
Constant _constant, bool isNonNullableByDefault) {
|
||||
TypeLabeler labeler = new TypeLabeler(isNonNullableByDefault);
|
||||
List<Object> constantParts = labeler.labelConstant(_constant);
|
||||
String constant = constantParts.join();
|
||||
return new Message(codeConstEvalElementNotPrimitiveEquality,
|
||||
problemMessage:
|
||||
"""The element '${constant}' does not have a primitive equality.""" +
|
||||
labeler.originMessages,
|
||||
arguments: {'constant': _constant});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<
|
||||
Message Function(
|
||||
Constant _constant, DartType _type, bool isNonNullableByDefault)>
|
||||
templateConstEvalEqualsOperandNotPrimitiveEquality = const Template<
|
||||
Message Function(Constant _constant, DartType _type,
|
||||
bool isNonNullableByDefault)>(
|
||||
problemMessageTemplate:
|
||||
r"""Binary operator '==' requires receiver constant '#constant' of a type with primitive equality or type 'double', but was of type '#type'.""",
|
||||
withArguments:
|
||||
_withArgumentsConstEvalEqualsOperandNotPrimitiveEquality);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<
|
||||
Message Function(
|
||||
Constant _constant, DartType _type, bool isNonNullableByDefault)>
|
||||
codeConstEvalEqualsOperandNotPrimitiveEquality = const Code<
|
||||
Message Function(
|
||||
Constant _constant, DartType _type, bool isNonNullableByDefault)>(
|
||||
"ConstEvalEqualsOperandNotPrimitiveEquality",
|
||||
);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
Message _withArgumentsConstEvalEqualsOperandNotPrimitiveEquality(
|
||||
Constant _constant, DartType _type, bool isNonNullableByDefault) {
|
||||
TypeLabeler labeler = new TypeLabeler(isNonNullableByDefault);
|
||||
List<Object> constantParts = labeler.labelConstant(_constant);
|
||||
List<Object> typeParts = labeler.labelType(_type);
|
||||
String constant = constantParts.join();
|
||||
String type = typeParts.join();
|
||||
return new Message(codeConstEvalEqualsOperandNotPrimitiveEquality,
|
||||
problemMessage:
|
||||
"""Binary operator '==' requires receiver constant '${constant}' of a type with primitive equality or type 'double', but was of type '${type}'.""" +
|
||||
labeler.originMessages,
|
||||
arguments: {'constant': _constant, 'type': _type});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<Message Function(DartType _type, bool isNonNullableByDefault)>
|
||||
templateConstEvalFreeTypeParameter = const Template<
|
||||
|
@ -865,6 +931,35 @@ Message _withArgumentsConstEvalKeyImplementsEqual(
|
|||
arguments: {'constant': _constant});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<
|
||||
Message Function(Constant _constant, bool isNonNullableByDefault)>
|
||||
templateConstEvalKeyNotPrimitiveEquality = const Template<
|
||||
Message Function(Constant _constant, bool isNonNullableByDefault)>(
|
||||
problemMessageTemplate:
|
||||
r"""The key '#constant' does not have a primitive equality.""",
|
||||
withArguments: _withArgumentsConstEvalKeyNotPrimitiveEquality);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<Message Function(Constant _constant, bool isNonNullableByDefault)>
|
||||
codeConstEvalKeyNotPrimitiveEquality = const Code<
|
||||
Message Function(Constant _constant, bool isNonNullableByDefault)>(
|
||||
"ConstEvalKeyNotPrimitiveEquality",
|
||||
);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
Message _withArgumentsConstEvalKeyNotPrimitiveEquality(
|
||||
Constant _constant, bool isNonNullableByDefault) {
|
||||
TypeLabeler labeler = new TypeLabeler(isNonNullableByDefault);
|
||||
List<Object> constantParts = labeler.labelConstant(_constant);
|
||||
String constant = constantParts.join();
|
||||
return new Message(codeConstEvalKeyNotPrimitiveEquality,
|
||||
problemMessage:
|
||||
"""The key '${constant}' does not have a primitive equality.""" +
|
||||
labeler.originMessages,
|
||||
arguments: {'constant': _constant});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<
|
||||
Message Function(Constant _constant, bool isNonNullableByDefault)>
|
||||
|
|
|
@ -159,10 +159,17 @@ class SetConstantBuilder extends _ListOrSetConstantBuilder<SetLiteral> {
|
|||
@override
|
||||
AbortConstant? addConstant(Constant constant, TreeNode context) {
|
||||
if (!evaluator.hasPrimitiveEqual(constant)) {
|
||||
return evaluator.createEvaluationErrorConstant(
|
||||
context,
|
||||
templateConstEvalElementImplementsEqual.withArguments(
|
||||
constant, evaluator.isNonNullableByDefault));
|
||||
if (evaluator.enablePrimitiveEquality) {
|
||||
return evaluator.createEvaluationErrorConstant(
|
||||
context,
|
||||
templateConstEvalElementNotPrimitiveEquality.withArguments(
|
||||
constant, evaluator.isNonNullableByDefault));
|
||||
} else {
|
||||
return evaluator.createEvaluationErrorConstant(
|
||||
context,
|
||||
templateConstEvalElementImplementsEqual.withArguments(
|
||||
constant, evaluator.isNonNullableByDefault));
|
||||
}
|
||||
}
|
||||
bool unseen = seen.add(constant);
|
||||
if (!unseen) {
|
||||
|
@ -304,10 +311,17 @@ class MapConstantBuilder {
|
|||
parts.add(lastPart = <ConstantMapEntry>[]);
|
||||
}
|
||||
if (!evaluator.hasPrimitiveEqual(key)) {
|
||||
return evaluator.createEvaluationErrorConstant(
|
||||
keyContext,
|
||||
templateConstEvalKeyImplementsEqual.withArguments(
|
||||
key, evaluator.isNonNullableByDefault));
|
||||
if (evaluator.enablePrimitiveEquality) {
|
||||
return evaluator.createEvaluationErrorConstant(
|
||||
keyContext,
|
||||
templateConstEvalKeyNotPrimitiveEquality.withArguments(
|
||||
key, evaluator.isNonNullableByDefault));
|
||||
} else {
|
||||
return evaluator.createEvaluationErrorConstant(
|
||||
keyContext,
|
||||
templateConstEvalKeyImplementsEqual.withArguments(
|
||||
key, evaluator.isNonNullableByDefault));
|
||||
}
|
||||
}
|
||||
bool unseenKey = seenKeys.add(key);
|
||||
if (!unseenKey) {
|
||||
|
|
|
@ -442,6 +442,8 @@ class ConstantsTransformer extends RemovingTransformer {
|
|||
/// rewritten.
|
||||
bool get keepLocals => backend.keepLocals;
|
||||
|
||||
Library get currentLibrary => _staticTypeContext!.enclosingLibrary;
|
||||
|
||||
// Transform the library/class members:
|
||||
|
||||
void convertLibrary(Library library) {
|
||||
|
@ -1517,7 +1519,7 @@ class ConstantsTransformer extends RemovingTransformer {
|
|||
reportedErrors = [];
|
||||
}
|
||||
if (!useFallbackExhaustivenessAlgorithm) {
|
||||
Library library = _staticTypeContext!.enclosingLibrary;
|
||||
Library library = currentLibrary;
|
||||
for (ExhaustivenessError error in errors) {
|
||||
if (error is UnreachableCaseError) {
|
||||
if (library.importUri.isScheme('dart') &&
|
||||
|
@ -1558,7 +1560,7 @@ class ConstantsTransformer extends RemovingTransformer {
|
|||
TreeNode visitSwitchStatement(
|
||||
SwitchStatement node, TreeNode? removalSentinel) {
|
||||
TreeNode result = super.visitSwitchStatement(node, removalSentinel);
|
||||
Library library = _staticTypeContext!.enclosingLibrary;
|
||||
Library library = currentLibrary;
|
||||
// ignore: unnecessary_null_comparison
|
||||
if (library != null) {
|
||||
for (SwitchCase switchCase in node.cases) {
|
||||
|
@ -2183,6 +2185,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
final Map<Node, Constant?> nodeCache;
|
||||
|
||||
late Map<Class, bool> primitiveEqualCache;
|
||||
late Map<Class, bool> primitiveHashCodeCache;
|
||||
|
||||
/// Classes that are considered having a primitive equals but where the
|
||||
/// `operator ==` is actually defined through as custom method. For instance
|
||||
|
@ -2210,6 +2213,8 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
bool get isNonNullableByDefault =>
|
||||
_staticTypeContext!.nonNullable == Nullability.nonNullable;
|
||||
|
||||
Library get currentLibrary => _staticTypeContext!.enclosingLibrary;
|
||||
|
||||
late ConstantWeakener _weakener;
|
||||
|
||||
ConstantEvaluator(this.dartLibrarySupport, this.backend, this.component,
|
||||
|
@ -2247,6 +2252,7 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
coreTypes.symbolClass: true,
|
||||
coreTypes.typeClass: true,
|
||||
};
|
||||
primitiveHashCodeCache = <Class, bool>{...primitiveEqualCache};
|
||||
_weakener = new ConstantWeakener(this);
|
||||
}
|
||||
|
||||
|
@ -3648,20 +3654,37 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
}
|
||||
|
||||
Constant _handleEquals(Expression node, Constant left, Constant right) {
|
||||
if (left is NullConstant ||
|
||||
left is BoolConstant ||
|
||||
left is IntConstant ||
|
||||
left is DoubleConstant ||
|
||||
left is StringConstant ||
|
||||
right is NullConstant) {
|
||||
// [DoubleConstant] uses [identical] to determine equality, so we need
|
||||
// to take the special cases into account.
|
||||
return doubleSpecialCases(left, right) ?? makeBoolConstant(left == right);
|
||||
if (enablePrimitiveEquality) {
|
||||
if (hasPrimitiveEqual(left) ||
|
||||
left is DoubleConstant ||
|
||||
right is NullConstant) {
|
||||
return doubleSpecialCases(left, right) ??
|
||||
makeBoolConstant(left == right);
|
||||
} else {
|
||||
return createEvaluationErrorConstant(
|
||||
node,
|
||||
templateConstEvalEqualsOperandNotPrimitiveEquality.withArguments(
|
||||
left,
|
||||
left.getType(_staticTypeContext!),
|
||||
isNonNullableByDefault));
|
||||
}
|
||||
} else {
|
||||
return createEvaluationErrorConstant(
|
||||
node,
|
||||
templateConstEvalInvalidEqualsOperandType.withArguments(
|
||||
left, left.getType(_staticTypeContext!), isNonNullableByDefault));
|
||||
if (left is NullConstant ||
|
||||
left is BoolConstant ||
|
||||
left is IntConstant ||
|
||||
left is DoubleConstant ||
|
||||
left is StringConstant ||
|
||||
right is NullConstant) {
|
||||
// [DoubleConstant] uses [identical] to determine equality, so we need
|
||||
// to take the special cases into account.
|
||||
return doubleSpecialCases(left, right) ??
|
||||
makeBoolConstant(left == right);
|
||||
} else {
|
||||
return createEvaluationErrorConstant(
|
||||
node,
|
||||
templateConstEvalInvalidEqualsOperandType.withArguments(left,
|
||||
left.getType(_staticTypeContext!), isNonNullableByDefault));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4737,9 +4760,8 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
|
||||
@override
|
||||
Constant visitSymbolLiteral(SymbolLiteral node) {
|
||||
final Reference? libraryReference = node.value.startsWith('_')
|
||||
? _staticTypeContext!.enclosingLibrary.reference
|
||||
: null;
|
||||
final Reference? libraryReference =
|
||||
node.value.startsWith('_') ? currentLibrary.reference : null;
|
||||
return canonicalize(new SymbolConstant(node.value, libraryReference));
|
||||
}
|
||||
|
||||
|
@ -4867,6 +4889,8 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
return null;
|
||||
}
|
||||
|
||||
bool get enablePrimitiveEquality => currentLibrary.languageVersion.major >= 3;
|
||||
|
||||
bool hasPrimitiveEqual(Constant constant,
|
||||
{bool allowPseudoPrimitive = true}) {
|
||||
if (intFolder.isInt(constant)) return true;
|
||||
|
@ -4892,9 +4916,13 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
}
|
||||
DartType type = constant.getType(_staticTypeContext!);
|
||||
if (type is InterfaceType) {
|
||||
bool result = classHasPrimitiveEqual(type.classNode);
|
||||
Class cls = type.classNode;
|
||||
bool result = classHasPrimitiveEqual(cls);
|
||||
if (result && !allowPseudoPrimitive) {
|
||||
result = !pseudoPrimitiveClasses.contains(type.classNode);
|
||||
result = !pseudoPrimitiveClasses.contains(cls);
|
||||
}
|
||||
if (result && enablePrimitiveEquality) {
|
||||
result = classHasPrimitiveHashCode(cls);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -4917,6 +4945,27 @@ class ConstantEvaluator implements ExpressionVisitor<Constant> {
|
|||
classHasPrimitiveEqual(klass.supertype!.classNode);
|
||||
}
|
||||
|
||||
bool classHasPrimitiveHashCode(Class klass) {
|
||||
bool? cached = primitiveHashCodeCache[klass];
|
||||
if (cached != null) return cached;
|
||||
for (Procedure procedure in klass.procedures) {
|
||||
if (procedure.kind == ProcedureKind.Getter &&
|
||||
procedure.name.text == 'hashCode' &&
|
||||
!procedure.isAbstract &&
|
||||
!procedure.isForwardingStub) {
|
||||
return primitiveHashCodeCache[klass] = false;
|
||||
}
|
||||
}
|
||||
for (Field field in klass.fields) {
|
||||
if (field.name.text == 'hashCode') {
|
||||
return primitiveHashCodeCache[klass] = false;
|
||||
}
|
||||
}
|
||||
if (klass.supertype == null) return true; // To be on the safe side
|
||||
return primitiveHashCodeCache[klass] =
|
||||
classHasPrimitiveHashCode(klass.supertype!.classNode);
|
||||
}
|
||||
|
||||
BoolConstant makeBoolConstant(bool value) =>
|
||||
value ? trueConstant : falseConstant;
|
||||
|
||||
|
@ -6097,3 +6146,10 @@ class _PatternSwitchStatementInfo {
|
|||
_PatternSwitchStatementInfo(this.switchIndexVariable,
|
||||
this.innerLabeledStatement, this.switchCaseIndexMap);
|
||||
}
|
||||
|
||||
enum PrimitiveEquality {
|
||||
None,
|
||||
EqualsOnly,
|
||||
HashCodeOnly,
|
||||
EqualsAndHashCode,
|
||||
}
|
||||
|
|
|
@ -3087,7 +3087,7 @@ class MapEntry<K, V> {
|
|||
|
||||
abstract class Map<K, V> extends Iterable {
|
||||
factory Map.unmodifiable(other) => null;
|
||||
factory Map.of(o) = Map<E>._of;
|
||||
factory Map.of(o) = Map<K, V>._of;
|
||||
external factory Map._of(o);
|
||||
Iterable<MapEntry<K, V>> get entries;
|
||||
void operator []=(K key, V value) {}
|
||||
|
|
|
@ -107,6 +107,10 @@ ConstEvalDeferredLibrary/example: Fail
|
|||
ConstEvalDuplicateElement/example: Fail
|
||||
ConstEvalDuplicateKey/example: Fail
|
||||
ConstEvalElementImplementsEqual/example: Fail
|
||||
ConstEvalElementNotPrimitiveEquality/analyzerCode: Fail
|
||||
ConstEvalElementNotPrimitiveEquality/example: Fail
|
||||
ConstEvalEqualsOperandNotPrimitiveEquality/analyzerCode: Fail
|
||||
ConstEvalEqualsOperandNotPrimitiveEquality/example: Fail
|
||||
ConstEvalError/analyzerCode: Fail
|
||||
ConstEvalError/example: Fail
|
||||
ConstEvalExtension/example: Fail
|
||||
|
@ -138,6 +142,8 @@ ConstEvalIterationInConstList/example: Fail
|
|||
ConstEvalIterationInConstMap/example: Fail
|
||||
ConstEvalIterationInConstSet/example: Fail
|
||||
ConstEvalKeyImplementsEqual/example: Fail
|
||||
ConstEvalKeyNotPrimitiveEquality/analyzerCode: Fail
|
||||
ConstEvalKeyNotPrimitiveEquality/example: Fail
|
||||
ConstEvalNegativeShift/analyzerCode: Fail # http://dartbug.com/33481
|
||||
ConstEvalNegativeShift/example: Fail
|
||||
ConstEvalNonConstantVariableGet/example: Fail
|
||||
|
|
|
@ -139,10 +139,16 @@ ConstEvalElementImplementsEqual:
|
|||
problemMessage: "The element '#constant' does not have a primitive operator '=='."
|
||||
analyzerCode: CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS
|
||||
|
||||
ConstEvalElementNotPrimitiveEquality:
|
||||
problemMessage: "The element '#constant' does not have a primitive equality."
|
||||
|
||||
ConstEvalKeyImplementsEqual:
|
||||
problemMessage: "The key '#constant' does not have a primitive operator '=='."
|
||||
analyzerCode: CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS
|
||||
|
||||
ConstEvalKeyNotPrimitiveEquality:
|
||||
problemMessage: "The key '#constant' does not have a primitive equality."
|
||||
|
||||
ConstEvalCaseImplementsEqual:
|
||||
problemMessage: "Case expression '#constant' does not have a primitive operator '=='."
|
||||
|
||||
|
@ -155,6 +161,9 @@ ConstEvalInvalidBinaryOperandType:
|
|||
ConstEvalInvalidEqualsOperandType:
|
||||
problemMessage: "Binary operator '==' requires receiver constant '#constant' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type '#type'."
|
||||
|
||||
ConstEvalEqualsOperandNotPrimitiveEquality:
|
||||
problemMessage: "Binary operator '==' requires receiver constant '#constant' of a type with primitive equality or type 'double', but was of type '#type'."
|
||||
|
||||
ConstEvalZeroDivisor:
|
||||
problemMessage: "Binary operator '#string' on '#string2' requires non-zero divisor, but divisor was '0'."
|
||||
analyzerCode: CONST_EVAL_THROWS_IDBZE
|
||||
|
|
|
@ -64,6 +64,7 @@ bailout
|
|||
bar'baz
|
||||
bar\'baz
|
||||
barbar
|
||||
baseline
|
||||
bash
|
||||
bat
|
||||
bazbaz
|
||||
|
@ -113,6 +114,7 @@ cb
|
|||
cc
|
||||
ccc
|
||||
cdee
|
||||
center
|
||||
certificate
|
||||
cf
|
||||
characteristics
|
||||
|
@ -639,6 +641,7 @@ stay
|
|||
std
|
||||
stopwatches
|
||||
stress
|
||||
stretch
|
||||
stringy
|
||||
strip
|
||||
strongest
|
||||
|
@ -669,6 +672,7 @@ thereby
|
|||
thereof
|
||||
thread
|
||||
ticks
|
||||
tile
|
||||
timed
|
||||
timeout
|
||||
timer
|
||||
|
|
|
@ -110,7 +110,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:48: Error: Constant evaluation error:
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
|
@ -161,7 +161,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:65:56: Error: Constant evaluation error:
|
||||
// const Map<dynamic, int> mapWithNonPrimitiveEqualsKey = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const WithEquals(42): 42
|
||||
// ^
|
||||
|
@ -314,7 +314,7 @@ static const field core::Set<core::String> quxWithCustomIterableSpread3 = invali
|
|||
- 'CustomIterable' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
const Set<String> quxWithCustomIterableSpread3 = {...baz, customIterable};
|
||||
^";
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Set<dynamic> setWithDuplicates = invalid-expression "The element '42' conflicts with another existing element in the set.";
|
||||
static const field core::Map<core::String, core::String>? nullMap = #C2;
|
||||
|
@ -334,7 +334,7 @@ static const field core::Map<core::String, core::String> mapWithCustomMap1 = inv
|
|||
static const field core::Map<core::String, core::String> mapWithCustomMap2 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<core::String, core::String> customMap = #C15;
|
||||
static const field core::Map<core::String, core::String> mapWithCustomMap3 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Map<core::int, core::int> mapWithDuplicates = invalid-expression "The key '42' conflicts with another existing key in the map.";
|
||||
static get fooAsGetter() → core::List<core::String>
|
||||
|
|
|
@ -110,7 +110,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:48: Error: Constant evaluation error:
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
|
@ -161,7 +161,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:65:56: Error: Constant evaluation error:
|
||||
// const Map<dynamic, int> mapWithNonPrimitiveEqualsKey = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const WithEquals(42): 42
|
||||
// ^
|
||||
|
@ -314,7 +314,7 @@ static const field core::Set<core::String> quxWithCustomIterableSpread3 = invali
|
|||
- 'CustomIterable' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
const Set<String> quxWithCustomIterableSpread3 = {...baz, customIterable};
|
||||
^";
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Set<dynamic> setWithDuplicates = invalid-expression "The element '42' conflicts with another existing element in the set.";
|
||||
static const field core::Map<core::String, core::String>? nullMap = #C2;
|
||||
|
@ -334,7 +334,7 @@ static const field core::Map<core::String, core::String> mapWithCustomMap1 = inv
|
|||
static const field core::Map<core::String, core::String> mapWithCustomMap2 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<core::String, core::String> customMap = #C15;
|
||||
static const field core::Map<core::String, core::String> mapWithCustomMap3 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Map<core::int, core::int> mapWithDuplicates = invalid-expression "The key '42' conflicts with another existing key in the map.";
|
||||
static get fooAsGetter() → core::List<core::String>
|
||||
|
|
|
@ -110,7 +110,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:48: Error: Constant evaluation error:
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
|
@ -161,7 +161,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:65:56: Error: Constant evaluation error:
|
||||
// const Map<dynamic, int> mapWithNonPrimitiveEqualsKey = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const WithEquals(42): 42
|
||||
// ^
|
||||
|
@ -314,7 +314,7 @@ static const field core::Set<core::String> quxWithCustomIterableSpread3 = invali
|
|||
- 'CustomIterable' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
const Set<String> quxWithCustomIterableSpread3 = {...baz, customIterable};
|
||||
^";
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Set<dynamic> setWithDuplicates = invalid-expression "The element '42' conflicts with another existing element in the set.";
|
||||
static const field core::Map<core::String, core::String>? nullMap = #C2;
|
||||
|
@ -334,7 +334,7 @@ static const field core::Map<core::String, core::String> mapWithCustomMap1 = inv
|
|||
static const field core::Map<core::String, core::String> mapWithCustomMap2 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<core::String, core::String> customMap = #C15;
|
||||
static const field core::Map<core::String, core::String> mapWithCustomMap3 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Map<core::int, core::int> mapWithDuplicates = invalid-expression "The key '42' conflicts with another existing key in the map.";
|
||||
static get fooAsGetter() → core::List<core::String>
|
||||
|
|
|
@ -110,7 +110,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:48: Error: Constant evaluation error:
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
|
@ -161,7 +161,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:65:56: Error: Constant evaluation error:
|
||||
// const Map<dynamic, int> mapWithNonPrimitiveEqualsKey = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const WithEquals(42): 42
|
||||
// ^
|
||||
|
@ -314,7 +314,7 @@ static const field core::Set<core::String> quxWithCustomIterableSpread3 = invali
|
|||
- 'CustomIterable' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
const Set<String> quxWithCustomIterableSpread3 = {...baz, customIterable};
|
||||
^";
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Set<dynamic> setWithDuplicates = invalid-expression "The element '42' conflicts with another existing element in the set.";
|
||||
static const field core::Map<core::String, core::String>? nullMap = #C2;
|
||||
|
@ -334,7 +334,7 @@ static const field core::Map<core::String, core::String> mapWithCustomMap1 = inv
|
|||
static const field core::Map<core::String, core::String> mapWithCustomMap2 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<core::String, core::String> customMap = #C15;
|
||||
static const field core::Map<core::String, core::String> mapWithCustomMap3 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Map<core::int, core::int> mapWithDuplicates = invalid-expression "The key '42' conflicts with another existing key in the map.";
|
||||
static get fooAsGetter() → core::List<core::String>
|
||||
|
|
|
@ -110,7 +110,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:48: Error: Constant evaluation error:
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:49:55: Context: The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const Set<dynamic> setWithNonPrimitiveEquals = {const WithEquals(42)};
|
||||
// ^
|
||||
|
@ -161,7 +161,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/general/constants/const_collections.dart:65:56: Error: Constant evaluation error:
|
||||
// const Map<dynamic, int> mapWithNonPrimitiveEqualsKey = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/general/constants/const_collections.dart:66:9: Context: The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
// - 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
// const WithEquals(42): 42
|
||||
// ^
|
||||
|
@ -314,7 +314,7 @@ static const field core::Set<core::String> quxWithCustomIterableSpread3 = invali
|
|||
- 'CustomIterable' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.
|
||||
const Set<String> quxWithCustomIterableSpread3 = {...baz, customIterable};
|
||||
^";
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Set<dynamic> setWithNonPrimitiveEquals = invalid-expression "The element 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Set<dynamic> setWithDuplicates = invalid-expression "The element '42' conflicts with another existing element in the set.";
|
||||
static const field core::Map<core::String, core::String>? nullMap = #C2;
|
||||
|
@ -334,7 +334,7 @@ static const field core::Map<core::String, core::String> mapWithCustomMap1 = inv
|
|||
static const field core::Map<core::String, core::String> mapWithCustomMap2 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<core::String, core::String> customMap = #C15;
|
||||
static const field core::Map<core::String, core::String> mapWithCustomMap3 = invalid-expression "Only maps can be used in spreads in constant maps.";
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
|
||||
static const field core::Map<dynamic, core::int> mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive equality.
|
||||
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
|
||||
static const field core::Map<core::int, core::int> mapWithDuplicates = invalid-expression "The key '42' conflicts with another existing key in the map.";
|
||||
static get fooAsGetter() → core::List<core::String>
|
||||
|
|
|
@ -189,17 +189,6 @@ library /*isNonNullableByDefault*/;
|
|||
// const x4 = x++;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Error: Constant evaluation error:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Context: Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
// - 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:12: Context: While analyzing:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:135:26: Error: Constant evaluation error:
|
||||
// const int circularity1 = circularity2;
|
||||
// ^
|
||||
|
@ -421,8 +410,7 @@ static const field self::ExtendsFoo2 extendsFoo2 = invalid-expression "pkg/front
|
|||
static const field self::Foo foo1 = #C13;
|
||||
static const field self::Foo foo2 = #C13;
|
||||
static const field core::bool foosIdentical = #C2;
|
||||
static const field core::bool foosEqual = invalid-expression "Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
- 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.";
|
||||
static const field core::bool foosEqual = #C2;
|
||||
static const field core::Symbol barFoo = #C14;
|
||||
static const field core::Symbol barFooEqual = #C15;
|
||||
static const field core::Symbol tripleShiftSymbol = #C16;
|
||||
|
|
|
@ -189,17 +189,6 @@ library /*isNonNullableByDefault*/;
|
|||
// const x4 = x++;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Error: Constant evaluation error:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Context: Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
// - 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:12: Context: While analyzing:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:135:26: Error: Constant evaluation error:
|
||||
// const int circularity1 = circularity2;
|
||||
// ^
|
||||
|
@ -421,8 +410,7 @@ static const field self::ExtendsFoo2 extendsFoo2 = invalid-expression "pkg/front
|
|||
static const field self::Foo foo1 = #C13;
|
||||
static const field self::Foo foo2 = #C13;
|
||||
static const field core::bool foosIdentical = #C2;
|
||||
static const field core::bool foosEqual = invalid-expression "Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
- 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.";
|
||||
static const field core::bool foosEqual = #C2;
|
||||
static const field core::Symbol barFoo = #C14;
|
||||
static const field core::Symbol barFooEqual = #C15;
|
||||
static const field core::Symbol tripleShiftSymbol = #C16;
|
||||
|
|
|
@ -189,17 +189,6 @@ library /*isNonNullableByDefault*/;
|
|||
// const x4 = x++;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Error: Constant evaluation error:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Context: Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
// - 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:12: Context: While analyzing:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:135:26: Error: Constant evaluation error:
|
||||
// const int circularity1 = circularity2;
|
||||
// ^
|
||||
|
@ -411,8 +400,7 @@ static const field self::ExtendsFoo2 extendsFoo2 = invalid-expression "pkg/front
|
|||
static const field self::Foo foo1 = #C13;
|
||||
static const field self::Foo foo2 = #C13;
|
||||
static const field core::bool foosIdentical = #C2;
|
||||
static const field core::bool foosEqual = invalid-expression "Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
- 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.";
|
||||
static const field core::bool foosEqual = #C2;
|
||||
static const field core::Symbol barFoo = #C14;
|
||||
static const field core::Symbol barFooEqual = #C15;
|
||||
static const field core::Symbol tripleShiftSymbol = #C16;
|
||||
|
|
|
@ -189,17 +189,6 @@ library /*isNonNullableByDefault*/;
|
|||
// const x4 = x++;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Error: Constant evaluation error:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Context: Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
// - 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:12: Context: While analyzing:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:135:26: Error: Constant evaluation error:
|
||||
// const int circularity1 = circularity2;
|
||||
// ^
|
||||
|
@ -411,8 +400,7 @@ static const field self::ExtendsFoo2 extendsFoo2 = invalid-expression "pkg/front
|
|||
static const field self::Foo foo1 = #C13;
|
||||
static const field self::Foo foo2 = #C13;
|
||||
static const field core::bool foosIdentical = #C2;
|
||||
static const field core::bool foosEqual = invalid-expression "Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
- 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.";
|
||||
static const field core::bool foosEqual = #C2;
|
||||
static const field core::Symbol barFoo = #C14;
|
||||
static const field core::Symbol barFooEqual = #C15;
|
||||
static const field core::Symbol tripleShiftSymbol = #C16;
|
||||
|
|
|
@ -334,8 +334,7 @@ Evaluated: VariableGet @ org-dartlang-testcase:///various2.dart:85:12 -> IntCons
|
|||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:126:24 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:127:24 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
|
||||
Evaluated: StaticInvocation @ org-dartlang-testcase:///various2.dart:128:28 -> BoolConstant(true)
|
||||
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:129:24 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
|
||||
Evaluated: StaticGet @ org-dartlang-testcase:///various2.dart:129:32 -> InstanceConstant(const Foo{Foo.x: 42, Foo.y: 5})
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///various2.dart:129:29 -> BoolConstant(true)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:130:29 -> SymbolConstant(#Foo)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:131:34 -> SymbolConstant(#Foo=)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///various2.dart:132:40 -> SymbolConstant(#>>>)
|
||||
|
@ -361,4 +360,4 @@ Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:212:25
|
|||
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:213:40 -> BoolConstant(false)
|
||||
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:214:25 -> NullConstant(null)
|
||||
Evaluated: ConditionalExpression @ org-dartlang-testcase:///various2.dart:215:40 -> BoolConstant(false)
|
||||
Extra constant evaluation: evaluated: 147, effectively constant: 66
|
||||
Extra constant evaluation: evaluated: 145, effectively constant: 65
|
||||
|
|
|
@ -189,17 +189,6 @@ library /*isNonNullableByDefault*/;
|
|||
// const x4 = x++;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Error: Constant evaluation error:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:29: Context: Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
// - 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:129:12: Context: While analyzing:
|
||||
// const bool foosEqual = foo1 == foo2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/constants/various2.dart:135:26: Error: Constant evaluation error:
|
||||
// const int circularity1 = circularity2;
|
||||
// ^
|
||||
|
@ -411,8 +400,7 @@ static const field self::ExtendsFoo2 extendsFoo2 = invalid-expression "pkg/front
|
|||
static const field self::Foo foo1 = #C13;
|
||||
static const field self::Foo foo2 = #C13;
|
||||
static const field core::bool foosIdentical = #C2;
|
||||
static const field core::bool foosEqual = invalid-expression "Binary operator '==' requires receiver constant 'Foo {x: 42, y: 5}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Foo'.
|
||||
- 'Foo' is from 'pkg/front_end/testcases/general/constants/various2.dart'.";
|
||||
static const field core::bool foosEqual = #C2;
|
||||
static const field core::Symbol barFoo = #C14;
|
||||
static const field core::Symbol barFooEqual = #C15;
|
||||
static const field core::Symbol tripleShiftSymbol = #C16;
|
||||
|
|
|
@ -240,17 +240,6 @@ library /*isNonNullableByDefault*/;
|
|||
// case --o: // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Error: Constant evaluation error:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
// - 'Object' is from 'dart:core'.
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: While analyzing:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
|
@ -278,23 +267,20 @@ static method method<T extends core::Object? = dynamic>(dynamic o) → dynamic {
|
|||
late final synthesized core::bool #0#20 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#22 = #C9 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#24 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
final const synthesized core::bool #0#28 = invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'.";
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#31 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
case o++: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
case o--: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
case ++o: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#39 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
case --o: // Error
|
||||
^";
|
||||
{
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final dynamic #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final dynamic #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final dynamic #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'." =={core::Object::==}{(core::Object) → core::bool} #0#0 || (let final dynamic #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final dynamic #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final dynamic #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final dynamic #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#18 || (let final dynamic #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
{
|
||||
let final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:81:12: Error: This couldn't be parsed.
|
||||
case 1 ?? 2: // Error
|
||||
|
|
|
@ -240,17 +240,6 @@ library /*isNonNullableByDefault*/;
|
|||
// case --o: // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Error: Constant evaluation error:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
// - 'Object' is from 'dart:core'.
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: While analyzing:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
|
@ -300,23 +289,20 @@ static method method<T extends core::Object? = dynamic>(dynamic o) → dynamic {
|
|||
function ##0#24#initializer() → core::bool
|
||||
return #C10 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#24 = ##0#24#initializer(){() → core::bool};
|
||||
final const synthesized core::bool #0#28 = invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'.";
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#31 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
case o++: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
case o--: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
case ++o: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#39 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
case --o: // Error
|
||||
^";
|
||||
{
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final self::method::T% #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final self::method::T% #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final self::method::T% #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final core::int #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'." =={core::Object::==}{(core::Object) → core::bool} #0#0 || (let final core::List<self::method::T%> #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final self::method::T% #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final self::method::T% #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final self::method::T% #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final core::int #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#18 || (let final core::List<self::method::T%> #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
{
|
||||
let final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:81:12: Error: This couldn't be parsed.
|
||||
case 1 ?? 2: // Error
|
||||
|
|
|
@ -240,17 +240,6 @@ library /*isNonNullableByDefault*/;
|
|||
// case --o: // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Error: Constant evaluation error:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
// - 'Object' is from 'dart:core'.
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: While analyzing:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
|
@ -278,23 +267,20 @@ static method method<T extends core::Object? = dynamic>(dynamic o) → dynamic {
|
|||
late final synthesized core::bool #0#20 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#22 = #C9 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#24 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
final const synthesized core::bool #0#28 = invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'.";
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#31 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
case o++: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
case o--: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
case ++o: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#39 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
case --o: // Error
|
||||
^";
|
||||
{
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final dynamic #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final dynamic #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final dynamic #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'." =={core::Object::==}{(core::Object) → core::bool} #0#0 || (let final dynamic #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final dynamic #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final dynamic #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final dynamic #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#18 || (let final dynamic #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
{
|
||||
let final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:81:12: Error: This couldn't be parsed.
|
||||
case 1 ?? 2: // Error
|
||||
|
|
|
@ -240,17 +240,6 @@ library /*isNonNullableByDefault*/;
|
|||
// case --o: // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Error: Constant evaluation error:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
// - 'Object' is from 'dart:core'.
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: While analyzing:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
|
@ -278,23 +267,20 @@ static method method<T extends core::Object? = dynamic>(dynamic o) → dynamic {
|
|||
late final synthesized core::bool #0#20 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#22 = #C9 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#24 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
final const synthesized core::bool #0#28 = invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'.";
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#31 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
case o++: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
case o--: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
case ++o: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#39 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
case --o: // Error
|
||||
^";
|
||||
{
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final dynamic #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final dynamic #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final dynamic #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'." =={core::Object::==}{(core::Object) → core::bool} #0#0 || (let final dynamic #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final dynamic #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final dynamic #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final dynamic #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final dynamic #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#18 || (let final dynamic #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
{
|
||||
let final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:81:12: Error: This couldn't be parsed.
|
||||
case 1 ?? 2: // Error
|
||||
|
|
|
@ -240,17 +240,6 @@ library /*isNonNullableByDefault*/;
|
|||
// case --o: // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Error: Constant evaluation error:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
// - 'Object' is from 'dart:core'.
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/const_patterns_binary.dart:60:25: Context: While analyzing:
|
||||
// case const Object() == 2: // Error
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
|
@ -300,23 +289,20 @@ static method method<T extends core::Object? = dynamic>(dynamic o) → dynamic {
|
|||
function ##0#24#initializer() → core::bool
|
||||
return #C10 =={core::num::==}{(core::Object) → core::bool} #0#0;
|
||||
late final synthesized core::bool #0#24 = ##0#24#initializer(){() → core::bool};
|
||||
final const synthesized core::bool #0#28 = invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'.";
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#31 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:82:10: Error: Not a constant expression.
|
||||
case o++: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#33 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:83:10: Error: Not a constant expression.
|
||||
case o--: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#35 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:84:12: Error: Not a constant expression.
|
||||
case ++o: // Error
|
||||
^";
|
||||
final const synthesized invalid-type #0#39 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
final const synthesized invalid-type #0#37 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:85:12: Error: Not a constant expression.
|
||||
case --o: // Error
|
||||
^";
|
||||
{
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final self::method::T% #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final self::method::T% #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final self::method::T% #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final core::int #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || invalid-expression "Binary operator '==' requires receiver constant 'Object {}' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type 'Object'.
|
||||
- 'Object' is from 'dart:core'." =={core::Object::==}{(core::Object) → core::bool} #0#0 || (let final core::List<self::method::T%> #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
if(#0#2 || #0#4 || #0#2 && #0#4 || (let final self::method::T% #t1 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || #C11 =={core::Object::==}{(core::Object) → core::bool} #0#0 || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || (let final self::method::T% #t2 = #0#0 as{ForNonNullableByDefault} self::method::T% in #0#6) || (let final self::method::T% #t3 = #0#0 as{ForNonNullableByDefault} self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} self::method::T%) || (let final core::int #t4 = #0#0 as{ForNonNullableByDefault} core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::int) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#18 || (let final core::List<self::method::T%> #t5 = #0#0 as{ForNonNullableByDefault} core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as{ForNonNullableByDefault} core::List<self::method::T%>) || #0#10 || #0#12 || #0#4 || #0#14 || #0#16 || #0#2 || #0#18 || #0#20 || #0#10 || #0#16 || #0#10 || #0#20 || #0#20 || #0#18 || #0#18 || #0#22 || #0#16 || #0#16 || #0#24 || #0#2) {
|
||||
{
|
||||
let final invalid-type #t6 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:81:12: Error: This couldn't be parsed.
|
||||
case 1 ?? 2: // Error
|
||||
|
|
24
pkg/front_end/testcases/patterns/issue51800.dart
Normal file
24
pkg/front_end/testcases/patterns/issue51800.dart
Normal file
|
@ -0,0 +1,24 @@
|
|||
// 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.
|
||||
|
||||
class ExpansionTile {
|
||||
const ExpansionTile({
|
||||
this.expandedCrossAxisAlignment,
|
||||
}) : assert(expandedCrossAxisAlignment != CrossAxisAlignment.baseline);
|
||||
|
||||
final CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
}
|
||||
|
||||
enum CrossAxisAlignment {
|
||||
start,
|
||||
end,
|
||||
center,
|
||||
stretch,
|
||||
baseline,
|
||||
}
|
||||
|
||||
void main() {
|
||||
print(const ExpansionTile(
|
||||
expandedCrossAxisAlignment: CrossAxisAlignment.start));
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class ExpansionTile extends core::Object /*hasConstConstructor*/ {
|
||||
final field self::CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
const constructor •({self::CrossAxisAlignment? expandedCrossAxisAlignment = #C1}) → self::ExpansionTile
|
||||
: self::ExpansionTile::expandedCrossAxisAlignment = expandedCrossAxisAlignment, assert(!(expandedCrossAxisAlignment =={core::Object::==}{(core::Object) → core::bool} #C4)), super core::Object::•()
|
||||
;
|
||||
}
|
||||
class CrossAxisAlignment extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::CrossAxisAlignment> values = #C17;
|
||||
enum-element static const field self::CrossAxisAlignment start = #C7;
|
||||
enum-element static const field self::CrossAxisAlignment end = #C10;
|
||||
enum-element static const field self::CrossAxisAlignment center = #C13;
|
||||
enum-element static const field self::CrossAxisAlignment stretch = #C16;
|
||||
enum-element static const field self::CrossAxisAlignment baseline = #C4;
|
||||
const constructor •(core::int #index, core::String #name) → self::CrossAxisAlignment
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
method _enumToString() → core::String
|
||||
return "CrossAxisAlignment.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static method main() → void {
|
||||
core::print(#C18);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = null
|
||||
#C2 = 4
|
||||
#C3 = "baseline"
|
||||
#C4 = self::CrossAxisAlignment {index:#C2, _name:#C3}
|
||||
#C5 = 0
|
||||
#C6 = "start"
|
||||
#C7 = self::CrossAxisAlignment {index:#C5, _name:#C6}
|
||||
#C8 = 1
|
||||
#C9 = "end"
|
||||
#C10 = self::CrossAxisAlignment {index:#C8, _name:#C9}
|
||||
#C11 = 2
|
||||
#C12 = "center"
|
||||
#C13 = self::CrossAxisAlignment {index:#C11, _name:#C12}
|
||||
#C14 = 3
|
||||
#C15 = "stretch"
|
||||
#C16 = self::CrossAxisAlignment {index:#C14, _name:#C15}
|
||||
#C17 = <self::CrossAxisAlignment>[#C7, #C10, #C13, #C16, #C4]
|
||||
#C18 = self::ExpansionTile {expandedCrossAxisAlignment:#C7}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51800.dart:
|
||||
- CrossAxisAlignment. (from org-dartlang-testcase:///issue51800.dart:13:6)
|
||||
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- ExpansionTile. (from org-dartlang-testcase:///issue51800.dart:6:9)
|
|
@ -0,0 +1,55 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class ExpansionTile extends core::Object /*hasConstConstructor*/ {
|
||||
final field self::CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
const constructor •({self::CrossAxisAlignment? expandedCrossAxisAlignment = #C1}) → self::ExpansionTile
|
||||
: self::ExpansionTile::expandedCrossAxisAlignment = expandedCrossAxisAlignment, assert(!(expandedCrossAxisAlignment =={core::Object::==}{(core::Object) → core::bool} #C4)), super core::Object::•()
|
||||
;
|
||||
}
|
||||
class CrossAxisAlignment extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::CrossAxisAlignment> values = #C17;
|
||||
enum-element static const field self::CrossAxisAlignment start = #C7;
|
||||
enum-element static const field self::CrossAxisAlignment end = #C10;
|
||||
enum-element static const field self::CrossAxisAlignment center = #C13;
|
||||
enum-element static const field self::CrossAxisAlignment stretch = #C16;
|
||||
enum-element static const field self::CrossAxisAlignment baseline = #C4;
|
||||
const constructor •(core::int #index, core::String #name) → self::CrossAxisAlignment
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
method _enumToString() → core::String
|
||||
return "CrossAxisAlignment.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static method main() → void {
|
||||
core::print(#C18);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = null
|
||||
#C2 = 4
|
||||
#C3 = "baseline"
|
||||
#C4 = self::CrossAxisAlignment {index:#C2, _name:#C3}
|
||||
#C5 = 0
|
||||
#C6 = "start"
|
||||
#C7 = self::CrossAxisAlignment {index:#C5, _name:#C6}
|
||||
#C8 = 1
|
||||
#C9 = "end"
|
||||
#C10 = self::CrossAxisAlignment {index:#C8, _name:#C9}
|
||||
#C11 = 2
|
||||
#C12 = "center"
|
||||
#C13 = self::CrossAxisAlignment {index:#C11, _name:#C12}
|
||||
#C14 = 3
|
||||
#C15 = "stretch"
|
||||
#C16 = self::CrossAxisAlignment {index:#C14, _name:#C15}
|
||||
#C17 = <self::CrossAxisAlignment>[#C7, #C10, #C13, #C16, #C4]
|
||||
#C18 = self::ExpansionTile {expandedCrossAxisAlignment:#C7}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51800.dart:
|
||||
- CrossAxisAlignment. (from org-dartlang-testcase:///issue51800.dart:13:6)
|
||||
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- ExpansionTile. (from org-dartlang-testcase:///issue51800.dart:6:9)
|
|
@ -0,0 +1,16 @@
|
|||
class ExpansionTile {
|
||||
const ExpansionTile({
|
||||
this.expandedCrossAxisAlignment,
|
||||
}) : assert(expandedCrossAxisAlignment != CrossAxisAlignment.baseline);
|
||||
final CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
}
|
||||
|
||||
enum CrossAxisAlignment {
|
||||
start,
|
||||
end,
|
||||
center,
|
||||
stretch,
|
||||
baseline,
|
||||
}
|
||||
|
||||
void main() {}
|
|
@ -0,0 +1,16 @@
|
|||
class ExpansionTile {
|
||||
const ExpansionTile({
|
||||
this.expandedCrossAxisAlignment,
|
||||
}) : assert(expandedCrossAxisAlignment != CrossAxisAlignment.baseline);
|
||||
final CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
}
|
||||
|
||||
enum CrossAxisAlignment {
|
||||
start,
|
||||
end,
|
||||
center,
|
||||
stretch,
|
||||
baseline,
|
||||
}
|
||||
|
||||
void main() {}
|
55
pkg/front_end/testcases/patterns/issue51800.dart.weak.expect
Normal file
55
pkg/front_end/testcases/patterns/issue51800.dart.weak.expect
Normal file
|
@ -0,0 +1,55 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class ExpansionTile extends core::Object /*hasConstConstructor*/ {
|
||||
final field self::CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
const constructor •({self::CrossAxisAlignment? expandedCrossAxisAlignment = #C1}) → self::ExpansionTile
|
||||
: self::ExpansionTile::expandedCrossAxisAlignment = expandedCrossAxisAlignment, assert(!(expandedCrossAxisAlignment =={core::Object::==}{(core::Object) → core::bool} #C4)), super core::Object::•()
|
||||
;
|
||||
}
|
||||
class CrossAxisAlignment extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::CrossAxisAlignment> values = #C17;
|
||||
enum-element static const field self::CrossAxisAlignment start = #C7;
|
||||
enum-element static const field self::CrossAxisAlignment end = #C10;
|
||||
enum-element static const field self::CrossAxisAlignment center = #C13;
|
||||
enum-element static const field self::CrossAxisAlignment stretch = #C16;
|
||||
enum-element static const field self::CrossAxisAlignment baseline = #C4;
|
||||
const constructor •(core::int #index, core::String #name) → self::CrossAxisAlignment
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
method _enumToString() → core::String
|
||||
return "CrossAxisAlignment.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static method main() → void {
|
||||
core::print(#C18);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = null
|
||||
#C2 = 4
|
||||
#C3 = "baseline"
|
||||
#C4 = self::CrossAxisAlignment {index:#C2, _name:#C3}
|
||||
#C5 = 0
|
||||
#C6 = "start"
|
||||
#C7 = self::CrossAxisAlignment {index:#C5, _name:#C6}
|
||||
#C8 = 1
|
||||
#C9 = "end"
|
||||
#C10 = self::CrossAxisAlignment {index:#C8, _name:#C9}
|
||||
#C11 = 2
|
||||
#C12 = "center"
|
||||
#C13 = self::CrossAxisAlignment {index:#C11, _name:#C12}
|
||||
#C14 = 3
|
||||
#C15 = "stretch"
|
||||
#C16 = self::CrossAxisAlignment {index:#C14, _name:#C15}
|
||||
#C17 = <self::CrossAxisAlignment*>[#C7, #C10, #C13, #C16, #C4]
|
||||
#C18 = self::ExpansionTile {expandedCrossAxisAlignment:#C7}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51800.dart:
|
||||
- CrossAxisAlignment. (from org-dartlang-testcase:///issue51800.dart:13:6)
|
||||
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- ExpansionTile. (from org-dartlang-testcase:///issue51800.dart:6:9)
|
|
@ -0,0 +1,55 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class ExpansionTile extends core::Object /*hasConstConstructor*/ {
|
||||
final field self::CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
const constructor •({self::CrossAxisAlignment? expandedCrossAxisAlignment = #C1}) → self::ExpansionTile
|
||||
: self::ExpansionTile::expandedCrossAxisAlignment = expandedCrossAxisAlignment, assert(!(expandedCrossAxisAlignment =={core::Object::==}{(core::Object) → core::bool} #C4)), super core::Object::•()
|
||||
;
|
||||
}
|
||||
class CrossAxisAlignment extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::CrossAxisAlignment> values = #C17;
|
||||
enum-element static const field self::CrossAxisAlignment start = #C7;
|
||||
enum-element static const field self::CrossAxisAlignment end = #C10;
|
||||
enum-element static const field self::CrossAxisAlignment center = #C13;
|
||||
enum-element static const field self::CrossAxisAlignment stretch = #C16;
|
||||
enum-element static const field self::CrossAxisAlignment baseline = #C4;
|
||||
const constructor •(core::int #index, core::String #name) → self::CrossAxisAlignment
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
method _enumToString() → core::String
|
||||
return "CrossAxisAlignment.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static method main() → void {
|
||||
core::print(#C18);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = null
|
||||
#C2 = 4
|
||||
#C3 = "baseline"
|
||||
#C4 = self::CrossAxisAlignment {index:#C2, _name:#C3}
|
||||
#C5 = 0
|
||||
#C6 = "start"
|
||||
#C7 = self::CrossAxisAlignment {index:#C5, _name:#C6}
|
||||
#C8 = 1
|
||||
#C9 = "end"
|
||||
#C10 = self::CrossAxisAlignment {index:#C8, _name:#C9}
|
||||
#C11 = 2
|
||||
#C12 = "center"
|
||||
#C13 = self::CrossAxisAlignment {index:#C11, _name:#C12}
|
||||
#C14 = 3
|
||||
#C15 = "stretch"
|
||||
#C16 = self::CrossAxisAlignment {index:#C14, _name:#C15}
|
||||
#C17 = <self::CrossAxisAlignment*>[#C7, #C10, #C13, #C16, #C4]
|
||||
#C18 = self::ExpansionTile {expandedCrossAxisAlignment:#C7}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51800.dart:
|
||||
- CrossAxisAlignment. (from org-dartlang-testcase:///issue51800.dart:13:6)
|
||||
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- ExpansionTile. (from org-dartlang-testcase:///issue51800.dart:6:9)
|
|
@ -0,0 +1,36 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class ExpansionTile extends core::Object /*hasConstConstructor*/ {
|
||||
final field self::CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
const constructor •({self::CrossAxisAlignment? expandedCrossAxisAlignment = null}) → self::ExpansionTile
|
||||
: self::ExpansionTile::expandedCrossAxisAlignment = expandedCrossAxisAlignment, assert(!(expandedCrossAxisAlignment =={core::Object::==}{(core::Object) → core::bool} self::CrossAxisAlignment::baseline)), super core::Object::•()
|
||||
;
|
||||
}
|
||||
class CrossAxisAlignment extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::CrossAxisAlignment> values = const <self::CrossAxisAlignment>[self::CrossAxisAlignment::start, self::CrossAxisAlignment::end, self::CrossAxisAlignment::center, self::CrossAxisAlignment::stretch, self::CrossAxisAlignment::baseline];
|
||||
enum-element static const field self::CrossAxisAlignment start = const self::CrossAxisAlignment::•(0, "start");
|
||||
enum-element static const field self::CrossAxisAlignment end = const self::CrossAxisAlignment::•(1, "end");
|
||||
enum-element static const field self::CrossAxisAlignment center = const self::CrossAxisAlignment::•(2, "center");
|
||||
enum-element static const field self::CrossAxisAlignment stretch = const self::CrossAxisAlignment::•(3, "stretch");
|
||||
enum-element static const field self::CrossAxisAlignment baseline = const self::CrossAxisAlignment::•(4, "baseline");
|
||||
const constructor •(core::int #index, core::String #name) → self::CrossAxisAlignment
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
method _enumToString() → core::String
|
||||
return "CrossAxisAlignment.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static method main() → void
|
||||
;
|
||||
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated: StaticGet @ org-dartlang-testcase:///issue51800.dart:8:64 -> InstanceConstant(const CrossAxisAlignment{_Enum.index: 4, _Enum._name: "baseline"})
|
||||
Evaluated: ListLiteral @ org-dartlang-testcase:///issue51800.dart:13:6 -> ListConstant(const <CrossAxisAlignment*>[const CrossAxisAlignment{_Enum.index: 0, _Enum._name: "start"}, const CrossAxisAlignment{_Enum.index: 1, _Enum._name: "end"}, const CrossAxisAlignment{_Enum.index: 2, _Enum._name: "center"}, const CrossAxisAlignment{_Enum.index: 3, _Enum._name: "stretch"}, const CrossAxisAlignment{_Enum.index: 4, _Enum._name: "baseline"}])
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue51800.dart:14:3 -> InstanceConstant(const CrossAxisAlignment{_Enum.index: 0, _Enum._name: "start"})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue51800.dart:15:3 -> InstanceConstant(const CrossAxisAlignment{_Enum.index: 1, _Enum._name: "end"})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue51800.dart:16:3 -> InstanceConstant(const CrossAxisAlignment{_Enum.index: 2, _Enum._name: "center"})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue51800.dart:17:3 -> InstanceConstant(const CrossAxisAlignment{_Enum.index: 3, _Enum._name: "stretch"})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///issue51800.dart:18:3 -> InstanceConstant(const CrossAxisAlignment{_Enum.index: 4, _Enum._name: "baseline"})
|
||||
Extra constant evaluation: evaluated: 16, effectively constant: 7
|
|
@ -0,0 +1,55 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class ExpansionTile extends core::Object /*hasConstConstructor*/ {
|
||||
final field self::CrossAxisAlignment? expandedCrossAxisAlignment;
|
||||
const constructor •({self::CrossAxisAlignment? expandedCrossAxisAlignment = #C1}) → self::ExpansionTile
|
||||
: self::ExpansionTile::expandedCrossAxisAlignment = expandedCrossAxisAlignment, assert(!(expandedCrossAxisAlignment =={core::Object::==}{(core::Object) → core::bool} #C4)), super core::Object::•()
|
||||
;
|
||||
}
|
||||
class CrossAxisAlignment extends core::_Enum /*isEnum*/ {
|
||||
static const field core::List<self::CrossAxisAlignment> values = #C17;
|
||||
enum-element static const field self::CrossAxisAlignment start = #C7;
|
||||
enum-element static const field self::CrossAxisAlignment end = #C10;
|
||||
enum-element static const field self::CrossAxisAlignment center = #C13;
|
||||
enum-element static const field self::CrossAxisAlignment stretch = #C16;
|
||||
enum-element static const field self::CrossAxisAlignment baseline = #C4;
|
||||
const constructor •(core::int #index, core::String #name) → self::CrossAxisAlignment
|
||||
: super core::_Enum::•(#index, #name)
|
||||
;
|
||||
method _enumToString() → core::String
|
||||
return "CrossAxisAlignment.${this.{core::_Enum::_name}{core::String}}";
|
||||
}
|
||||
static method main() → void {
|
||||
core::print(#C18);
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = null
|
||||
#C2 = 4
|
||||
#C3 = "baseline"
|
||||
#C4 = self::CrossAxisAlignment {index:#C2, _name:#C3}
|
||||
#C5 = 0
|
||||
#C6 = "start"
|
||||
#C7 = self::CrossAxisAlignment {index:#C5, _name:#C6}
|
||||
#C8 = 1
|
||||
#C9 = "end"
|
||||
#C10 = self::CrossAxisAlignment {index:#C8, _name:#C9}
|
||||
#C11 = 2
|
||||
#C12 = "center"
|
||||
#C13 = self::CrossAxisAlignment {index:#C11, _name:#C12}
|
||||
#C14 = 3
|
||||
#C15 = "stretch"
|
||||
#C16 = self::CrossAxisAlignment {index:#C14, _name:#C15}
|
||||
#C17 = <self::CrossAxisAlignment*>[#C7, #C10, #C13, #C16, #C4]
|
||||
#C18 = self::ExpansionTile {expandedCrossAxisAlignment:#C7}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///issue51800.dart:
|
||||
- CrossAxisAlignment. (from org-dartlang-testcase:///issue51800.dart:13:6)
|
||||
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- ExpansionTile. (from org-dartlang-testcase:///issue51800.dart:6:9)
|
169
pkg/front_end/testcases/patterns/primitive_equality.dart
Normal file
169
pkg/front_end/testcases/patterns/primitive_equality.dart
Normal file
|
@ -0,0 +1,169 @@
|
|||
// 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.
|
||||
|
||||
void topLevel() {}
|
||||
|
||||
class Const {
|
||||
const Const();
|
||||
}
|
||||
|
||||
class A {
|
||||
const A();
|
||||
int get hashCode => super.hashCode + 1;
|
||||
}
|
||||
|
||||
class B {
|
||||
const B();
|
||||
bool operator ==(Object other) => super == other;
|
||||
}
|
||||
|
||||
class C {
|
||||
const C();
|
||||
int get hashCode => super.hashCode + 1;
|
||||
bool operator ==(Object other) => super == other;
|
||||
}
|
||||
|
||||
const a1 = A() == Const(); // Error
|
||||
const a2 = Const() == A(); // Ok
|
||||
const a3 = A() != Const(); // Error
|
||||
const a4 = Const() != A(); // Ok
|
||||
const a5 = A() == null; // Ok
|
||||
const a6 = null == A(); // Ok
|
||||
const a7 = A() != null; // Ok
|
||||
const a8 = null != A(); // Ok
|
||||
|
||||
const b1 = B() == Const(); // Error
|
||||
const b2 = Const() == B(); // Ok
|
||||
const b3 = B() != Const(); // Error
|
||||
const b4 = Const() != B(); // Ok
|
||||
const b5 = B() == null; // Ok
|
||||
const b6 = null == B(); // Ok
|
||||
const b7 = B() != null; // Ok
|
||||
const b8 = null != B(); // Ok
|
||||
|
||||
const c1 = C() == Const(); // Error
|
||||
const c2 = Const() == C(); // Ok
|
||||
const c3 = C() != Const(); // Error
|
||||
const c4 = Const() != C(); // Ok
|
||||
const c5 = C() == null; // Ok
|
||||
const c6 = null == C(); // Ok
|
||||
const c7 = C() != null; // Ok
|
||||
const c8 = null != C(); // Ok
|
||||
|
||||
const d1 = true == Const(); // Ok
|
||||
const d2 = Const() == true; // Ok
|
||||
const d3 = true != Const(); // Ok
|
||||
const d4 = Const() != true; // Ok
|
||||
|
||||
const e1 = 0 == Const(); // Ok
|
||||
const e2 = Const() == 0; // Ok
|
||||
const e3 = 0 != Const(); // Ok
|
||||
const e4 = Const() != 0; // Ok
|
||||
|
||||
const f1 = '' == Const(); // Ok
|
||||
const f2 = Const() == ''; // Ok
|
||||
const f3 = '' != Const(); // Ok
|
||||
const f4 = Const() != ''; // Ok
|
||||
|
||||
const g1 = #a == Const(); // Ok
|
||||
const g2 = Const() == #a; // Ok
|
||||
const g3 = #a != Const(); // Ok
|
||||
const g4 = Const() != #a; // Ok
|
||||
|
||||
const h1 = const Symbol('b') == Const(); // Ok
|
||||
const h2 = Const() == const Symbol('b'); // Ok
|
||||
const h3 = const Symbol('b') != Const(); // Ok
|
||||
const h4 = Const() != const Symbol('b'); // Ok
|
||||
|
||||
const i1 = Object == Const(); // Ok
|
||||
const i2 = Const() == Object; // Ok
|
||||
const i3 = Object != Const(); // Ok
|
||||
const i4 = Const() != Object; // Ok
|
||||
|
||||
const j1 = [] == Const(); // Ok
|
||||
const j2 = Const() == []; // Ok
|
||||
const j3 = [] != Const(); // Ok
|
||||
const j4 = Const() != []; // Ok
|
||||
|
||||
const k1 = {} == Const(); // Ok
|
||||
const k2 = Const() == {}; // Ok
|
||||
const k3 = {} != Const(); // Ok
|
||||
const k4 = Const() != {}; // Ok
|
||||
|
||||
const l1 = {0} == Const(); // Ok
|
||||
const l2 = Const() == {0}; // Ok
|
||||
const l3 = {0} != Const(); // Ok
|
||||
const l4 = Const() != {0}; // Ok
|
||||
|
||||
const n1 = topLevel == Const(); // Ok
|
||||
const n2 = Const() == topLevel; // Ok
|
||||
const n3 = topLevel != Const(); // Ok
|
||||
const n4 = Const() != topLevel; // Ok
|
||||
|
||||
const o1 = 0.5 == Const(); // Ok
|
||||
const o2 = Const() == 0.5; // Ok
|
||||
const o3 = 0.5 != Const(); // Ok
|
||||
const o4 = Const() != 0.5; // Ok
|
||||
|
||||
const set1 = {
|
||||
null, // Ok
|
||||
Const(), // Ok
|
||||
true, // Ok
|
||||
0, // Ok
|
||||
'', // Ok
|
||||
#a, // Ok
|
||||
const Symbol('b'), // Ok
|
||||
Object, // Ok
|
||||
[], // Ok
|
||||
{}, // Ok
|
||||
{0}, // Ok
|
||||
topLevel, // Ok
|
||||
};
|
||||
|
||||
const set2 = {
|
||||
A(), // Error
|
||||
};
|
||||
|
||||
const set3 = {
|
||||
B(), // Error
|
||||
};
|
||||
|
||||
const set4 = {
|
||||
C(), // Error
|
||||
};
|
||||
|
||||
const set5 = {
|
||||
0.5, // Error,
|
||||
};
|
||||
|
||||
const map1 = {
|
||||
null: 0, // Ok
|
||||
Const(): 0, // Ok
|
||||
true: 0, // Ok
|
||||
0: 0, // Ok
|
||||
'': 0, // Ok
|
||||
#a: 0, // Ok
|
||||
const Symbol('b'): 0, // Ok
|
||||
Object: 0, // Ok
|
||||
[]: 0, // Ok
|
||||
{}: 0, // Ok
|
||||
{0}: 0, // Ok
|
||||
topLevel: 0, // Ok
|
||||
};
|
||||
|
||||
const map2 = {
|
||||
A(): 0, // Error
|
||||
};
|
||||
|
||||
const map3 = {
|
||||
B(): 0, // Error
|
||||
};
|
||||
|
||||
const map4 = {
|
||||
C(): 0, // Error
|
||||
};
|
||||
|
||||
const map5 = {
|
||||
0.5: 0, // Error,
|
||||
};
|
|
@ -0,0 +1,305 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Error: Constant evaluation error:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:7: Context: While analyzing:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Error: Constant evaluation error:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:7: Context: While analyzing:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Error: Constant evaluation error:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:7: Context: While analyzing:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Error: Constant evaluation error:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:7: Context: While analyzing:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Error: Constant evaluation error:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:7: Context: While analyzing:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Error: Constant evaluation error:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:7: Context: While analyzing:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:14: Error: Constant evaluation error:
|
||||
// const set2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:125:3: Context: The element 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:7: Context: While analyzing:
|
||||
// const set2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:14: Error: Constant evaluation error:
|
||||
// const set3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:129:3: Context: The element 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:7: Context: While analyzing:
|
||||
// const set3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:14: Error: Constant evaluation error:
|
||||
// const set4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:133:3: Context: The element 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:7: Context: While analyzing:
|
||||
// const set4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:14: Error: Constant evaluation error:
|
||||
// const set5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:137:3: Context: The element '0.5' does not have a primitive equality.
|
||||
// 0.5, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:7: Context: While analyzing:
|
||||
// const set5 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:14: Error: Constant evaluation error:
|
||||
// const map2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:156:3: Context: The key 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:7: Context: While analyzing:
|
||||
// const map2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:14: Error: Constant evaluation error:
|
||||
// const map3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:160:3: Context: The key 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:7: Context: While analyzing:
|
||||
// const map3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:14: Error: Constant evaluation error:
|
||||
// const map4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:164:3: Context: The key 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:7: Context: While analyzing:
|
||||
// const map4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:14: Error: Constant evaluation error:
|
||||
// const map5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:168:3: Context: The key '0.5' does not have a primitive equality.
|
||||
// 0.5: 0, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:7: Context: While analyzing:
|
||||
// const map5 = {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Const extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::Const
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
class A extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::A
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
}
|
||||
class B extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::B
|
||||
: super core::Object::•()
|
||||
;
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
class C extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
static const field core::bool a1 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a2 = #C1;
|
||||
static const field core::bool a3 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a4 = #C2;
|
||||
static const field core::bool a5 = #C1;
|
||||
static const field core::bool a6 = #C1;
|
||||
static const field core::bool a7 = #C2;
|
||||
static const field core::bool a8 = #C2;
|
||||
static const field core::bool b1 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b2 = #C1;
|
||||
static const field core::bool b3 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b4 = #C2;
|
||||
static const field core::bool b5 = #C1;
|
||||
static const field core::bool b6 = #C1;
|
||||
static const field core::bool b7 = #C2;
|
||||
static const field core::bool b8 = #C2;
|
||||
static const field core::bool c1 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c2 = #C1;
|
||||
static const field core::bool c3 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c4 = #C2;
|
||||
static const field core::bool c5 = #C1;
|
||||
static const field core::bool c6 = #C1;
|
||||
static const field core::bool c7 = #C2;
|
||||
static const field core::bool c8 = #C2;
|
||||
static const field core::bool d1 = #C1;
|
||||
static const field core::bool d2 = #C1;
|
||||
static const field core::bool d3 = #C2;
|
||||
static const field core::bool d4 = #C2;
|
||||
static const field core::bool e1 = #C1;
|
||||
static const field core::bool e2 = #C1;
|
||||
static const field core::bool e3 = #C2;
|
||||
static const field core::bool e4 = #C2;
|
||||
static const field core::bool f1 = #C1;
|
||||
static const field core::bool f2 = #C1;
|
||||
static const field core::bool f3 = #C2;
|
||||
static const field core::bool f4 = #C2;
|
||||
static const field core::bool g1 = #C1;
|
||||
static const field core::bool g2 = #C1;
|
||||
static const field core::bool g3 = #C2;
|
||||
static const field core::bool g4 = #C2;
|
||||
static const field core::bool h1 = #C1;
|
||||
static const field core::bool h2 = #C1;
|
||||
static const field core::bool h3 = #C2;
|
||||
static const field core::bool h4 = #C2;
|
||||
static const field core::bool i1 = #C1;
|
||||
static const field core::bool i2 = #C1;
|
||||
static const field core::bool i3 = #C2;
|
||||
static const field core::bool i4 = #C2;
|
||||
static const field core::bool j1 = #C1;
|
||||
static const field core::bool j2 = #C1;
|
||||
static const field core::bool j3 = #C2;
|
||||
static const field core::bool j4 = #C2;
|
||||
static const field core::bool k1 = #C1;
|
||||
static const field core::bool k2 = #C1;
|
||||
static const field core::bool k3 = #C2;
|
||||
static const field core::bool k4 = #C2;
|
||||
static const field core::bool l1 = #C1;
|
||||
static const field core::bool l2 = #C1;
|
||||
static const field core::bool l3 = #C2;
|
||||
static const field core::bool l4 = #C2;
|
||||
static const field core::bool n1 = #C1;
|
||||
static const field core::bool n2 = #C1;
|
||||
static const field core::bool n3 = #C2;
|
||||
static const field core::bool n4 = #C2;
|
||||
static const field core::bool o1 = #C1;
|
||||
static const field core::bool o2 = #C1;
|
||||
static const field core::bool o3 = #C2;
|
||||
static const field core::bool o4 = #C2;
|
||||
static const field core::Set<core::Object?> set1 = #C14;
|
||||
static const field core::Set<self::A> set2 = invalid-expression "The element 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::B> set3 = invalid-expression "The element 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::C> set4 = invalid-expression "The element 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<core::double> set5 = invalid-expression "The element '0.5' does not have a primitive equality.";
|
||||
static const field core::Map<core::Object?, core::int> map1 = #C15;
|
||||
static const field core::Map<self::A, core::int> map2 = invalid-expression "The key 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::B, core::int> map3 = invalid-expression "The key 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::C, core::int> map4 = invalid-expression "The key 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<core::double, core::int> map5 = invalid-expression "The key '0.5' does not have a primitive equality.";
|
||||
static method topLevel() → void {}
|
||||
|
||||
constants {
|
||||
#C1 = false
|
||||
#C2 = true
|
||||
#C3 = null
|
||||
#C4 = self::Const {}
|
||||
#C5 = 0
|
||||
#C6 = ""
|
||||
#C7 = #a
|
||||
#C8 = #b
|
||||
#C9 = TypeLiteralConstant(core::Object)
|
||||
#C10 = <dynamic>[]
|
||||
#C11 = <dynamic, dynamic>{}
|
||||
#C12 = <core::int>{#C5}
|
||||
#C13 = static-tearoff self::topLevel
|
||||
#C14 = <core::Object?>{#C3, #C4, #C2, #C5, #C6, #C7, #C8, #C9, #C10, #C11, #C12, #C13}
|
||||
#C15 = <core::Object?, core::int>{#C3:#C5, #C4:#C5, #C2:#C5, #C5:#C5, #C6:#C5, #C7:#C5, #C8:#C5, #C9:#C5, #C10:#C5, #C11:#C5, #C12:#C5, #C13:#C5}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///primitive_equality.dart:
|
||||
- A. (from org-dartlang-testcase:///primitive_equality.dart:12:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- Const. (from org-dartlang-testcase:///primitive_equality.dart:8:9)
|
||||
- B. (from org-dartlang-testcase:///primitive_equality.dart:17:9)
|
||||
- C. (from org-dartlang-testcase:///primitive_equality.dart:22:9)
|
|
@ -0,0 +1,305 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Error: Constant evaluation error:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:7: Context: While analyzing:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Error: Constant evaluation error:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:7: Context: While analyzing:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Error: Constant evaluation error:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:7: Context: While analyzing:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Error: Constant evaluation error:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:7: Context: While analyzing:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Error: Constant evaluation error:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:7: Context: While analyzing:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Error: Constant evaluation error:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:7: Context: While analyzing:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:14: Error: Constant evaluation error:
|
||||
// const set2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:125:3: Context: The element 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:7: Context: While analyzing:
|
||||
// const set2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:14: Error: Constant evaluation error:
|
||||
// const set3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:129:3: Context: The element 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:7: Context: While analyzing:
|
||||
// const set3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:14: Error: Constant evaluation error:
|
||||
// const set4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:133:3: Context: The element 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:7: Context: While analyzing:
|
||||
// const set4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:14: Error: Constant evaluation error:
|
||||
// const set5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:137:3: Context: The element '0.5' does not have a primitive equality.
|
||||
// 0.5, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:7: Context: While analyzing:
|
||||
// const set5 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:14: Error: Constant evaluation error:
|
||||
// const map2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:156:3: Context: The key 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:7: Context: While analyzing:
|
||||
// const map2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:14: Error: Constant evaluation error:
|
||||
// const map3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:160:3: Context: The key 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:7: Context: While analyzing:
|
||||
// const map3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:14: Error: Constant evaluation error:
|
||||
// const map4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:164:3: Context: The key 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:7: Context: While analyzing:
|
||||
// const map4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:14: Error: Constant evaluation error:
|
||||
// const map5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:168:3: Context: The key '0.5' does not have a primitive equality.
|
||||
// 0.5: 0, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:7: Context: While analyzing:
|
||||
// const map5 = {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Const extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::Const
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
class A extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::A
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
}
|
||||
class B extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::B
|
||||
: super core::Object::•()
|
||||
;
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
class C extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
static const field core::bool a1 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a2 = #C1;
|
||||
static const field core::bool a3 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a4 = #C2;
|
||||
static const field core::bool a5 = #C1;
|
||||
static const field core::bool a6 = #C1;
|
||||
static const field core::bool a7 = #C2;
|
||||
static const field core::bool a8 = #C2;
|
||||
static const field core::bool b1 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b2 = #C1;
|
||||
static const field core::bool b3 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b4 = #C2;
|
||||
static const field core::bool b5 = #C1;
|
||||
static const field core::bool b6 = #C1;
|
||||
static const field core::bool b7 = #C2;
|
||||
static const field core::bool b8 = #C2;
|
||||
static const field core::bool c1 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c2 = #C1;
|
||||
static const field core::bool c3 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c4 = #C2;
|
||||
static const field core::bool c5 = #C1;
|
||||
static const field core::bool c6 = #C1;
|
||||
static const field core::bool c7 = #C2;
|
||||
static const field core::bool c8 = #C2;
|
||||
static const field core::bool d1 = #C1;
|
||||
static const field core::bool d2 = #C1;
|
||||
static const field core::bool d3 = #C2;
|
||||
static const field core::bool d4 = #C2;
|
||||
static const field core::bool e1 = #C1;
|
||||
static const field core::bool e2 = #C1;
|
||||
static const field core::bool e3 = #C2;
|
||||
static const field core::bool e4 = #C2;
|
||||
static const field core::bool f1 = #C1;
|
||||
static const field core::bool f2 = #C1;
|
||||
static const field core::bool f3 = #C2;
|
||||
static const field core::bool f4 = #C2;
|
||||
static const field core::bool g1 = #C1;
|
||||
static const field core::bool g2 = #C1;
|
||||
static const field core::bool g3 = #C2;
|
||||
static const field core::bool g4 = #C2;
|
||||
static const field core::bool h1 = #C1;
|
||||
static const field core::bool h2 = #C1;
|
||||
static const field core::bool h3 = #C2;
|
||||
static const field core::bool h4 = #C2;
|
||||
static const field core::bool i1 = #C1;
|
||||
static const field core::bool i2 = #C1;
|
||||
static const field core::bool i3 = #C2;
|
||||
static const field core::bool i4 = #C2;
|
||||
static const field core::bool j1 = #C1;
|
||||
static const field core::bool j2 = #C1;
|
||||
static const field core::bool j3 = #C2;
|
||||
static const field core::bool j4 = #C2;
|
||||
static const field core::bool k1 = #C1;
|
||||
static const field core::bool k2 = #C1;
|
||||
static const field core::bool k3 = #C2;
|
||||
static const field core::bool k4 = #C2;
|
||||
static const field core::bool l1 = #C1;
|
||||
static const field core::bool l2 = #C1;
|
||||
static const field core::bool l3 = #C2;
|
||||
static const field core::bool l4 = #C2;
|
||||
static const field core::bool n1 = #C1;
|
||||
static const field core::bool n2 = #C1;
|
||||
static const field core::bool n3 = #C2;
|
||||
static const field core::bool n4 = #C2;
|
||||
static const field core::bool o1 = #C1;
|
||||
static const field core::bool o2 = #C1;
|
||||
static const field core::bool o3 = #C2;
|
||||
static const field core::bool o4 = #C2;
|
||||
static const field core::Set<core::Object?> set1 = #C14;
|
||||
static const field core::Set<self::A> set2 = invalid-expression "The element 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::B> set3 = invalid-expression "The element 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::C> set4 = invalid-expression "The element 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<core::double> set5 = invalid-expression "The element '0.5' does not have a primitive equality.";
|
||||
static const field core::Map<core::Object?, core::int> map1 = #C15;
|
||||
static const field core::Map<self::A, core::int> map2 = invalid-expression "The key 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::B, core::int> map3 = invalid-expression "The key 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::C, core::int> map4 = invalid-expression "The key 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<core::double, core::int> map5 = invalid-expression "The key '0.5' does not have a primitive equality.";
|
||||
static method topLevel() → void {}
|
||||
|
||||
constants {
|
||||
#C1 = false
|
||||
#C2 = true
|
||||
#C3 = null
|
||||
#C4 = self::Const {}
|
||||
#C5 = 0
|
||||
#C6 = ""
|
||||
#C7 = #a
|
||||
#C8 = #b
|
||||
#C9 = TypeLiteralConstant(core::Object)
|
||||
#C10 = <dynamic>[]
|
||||
#C11 = <dynamic, dynamic>{}
|
||||
#C12 = <core::int>{#C5}
|
||||
#C13 = static-tearoff self::topLevel
|
||||
#C14 = <core::Object?>{#C3, #C4, #C2, #C5, #C6, #C7, #C8, #C9, #C10, #C11, #C12, #C13}
|
||||
#C15 = <core::Object?, core::int>{#C3:#C5, #C4:#C5, #C2:#C5, #C5:#C5, #C6:#C5, #C7:#C5, #C8:#C5, #C9:#C5, #C10:#C5, #C11:#C5, #C12:#C5, #C13:#C5}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///primitive_equality.dart:
|
||||
- A. (from org-dartlang-testcase:///primitive_equality.dart:12:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- Const. (from org-dartlang-testcase:///primitive_equality.dart:8:9)
|
||||
- B. (from org-dartlang-testcase:///primitive_equality.dart:17:9)
|
||||
- C. (from org-dartlang-testcase:///primitive_equality.dart:22:9)
|
|
@ -0,0 +1,142 @@
|
|||
void topLevel() {}
|
||||
|
||||
class Const {
|
||||
const Const();
|
||||
}
|
||||
|
||||
class A {
|
||||
const A();
|
||||
int get hashCode => super.hashCode + 1;
|
||||
}
|
||||
|
||||
class B {
|
||||
const B();
|
||||
bool operator ==(Object other) => super == other;
|
||||
}
|
||||
|
||||
class C {
|
||||
const C();
|
||||
int get hashCode => super.hashCode + 1;
|
||||
bool operator ==(Object other) => super == other;
|
||||
}
|
||||
|
||||
const a1 = A() == Const();
|
||||
const a2 = Const() == A();
|
||||
const a3 = A() != Const();
|
||||
const a4 = Const() != A();
|
||||
const a5 = A() == null;
|
||||
const a6 = null == A();
|
||||
const a7 = A() != null;
|
||||
const a8 = null != A();
|
||||
const b1 = B() == Const();
|
||||
const b2 = Const() == B();
|
||||
const b3 = B() != Const();
|
||||
const b4 = Const() != B();
|
||||
const b5 = B() == null;
|
||||
const b6 = null == B();
|
||||
const b7 = B() != null;
|
||||
const b8 = null != B();
|
||||
const c1 = C() == Const();
|
||||
const c2 = Const() == C();
|
||||
const c3 = C() != Const();
|
||||
const c4 = Const() != C();
|
||||
const c5 = C() == null;
|
||||
const c6 = null == C();
|
||||
const c7 = C() != null;
|
||||
const c8 = null != C();
|
||||
const d1 = true == Const();
|
||||
const d2 = Const() == true;
|
||||
const d3 = true != Const();
|
||||
const d4 = Const() != true;
|
||||
const e1 = 0 == Const();
|
||||
const e2 = Const() == 0;
|
||||
const e3 = 0 != Const();
|
||||
const e4 = Const() != 0;
|
||||
const f1 = '' == Const();
|
||||
const f2 = Const() == '';
|
||||
const f3 = '' != Const();
|
||||
const f4 = Const() != '';
|
||||
const g1 = #a == Const();
|
||||
const g2 = Const() == #a;
|
||||
const g3 = #a != Const();
|
||||
const g4 = Const() != #a;
|
||||
const h1 = const Symbol('b') == Const();
|
||||
const h2 = Const() == const Symbol('b');
|
||||
const h3 = const Symbol('b') != Const();
|
||||
const h4 = Const() != const Symbol('b');
|
||||
const i1 = Object == Const();
|
||||
const i2 = Const() == Object;
|
||||
const i3 = Object != Const();
|
||||
const i4 = Const() != Object;
|
||||
const j1 = [] == Const();
|
||||
const j2 = Const() == [];
|
||||
const j3 = [] != Const();
|
||||
const j4 = Const() != [];
|
||||
const k1 = {} == Const();
|
||||
const k2 = Const() == {};
|
||||
const k3 = {} != Const();
|
||||
const k4 = Const() != {};
|
||||
const l1 = {0} == Const();
|
||||
const l2 = Const() == {0};
|
||||
const l3 = {0} != Const();
|
||||
const l4 = Const() != {0};
|
||||
const n1 = topLevel == Const();
|
||||
const n2 = Const() == topLevel;
|
||||
const n3 = topLevel != Const();
|
||||
const n4 = Const() != topLevel;
|
||||
const o1 = 0.5 == Const();
|
||||
const o2 = Const() == 0.5;
|
||||
const o3 = 0.5 != Const();
|
||||
const o4 = Const() != 0.5;
|
||||
const set1 = {
|
||||
null,
|
||||
Const(),
|
||||
true,
|
||||
0,
|
||||
'',
|
||||
#a,
|
||||
const Symbol('b'),
|
||||
Object,
|
||||
[],
|
||||
{},
|
||||
{0},
|
||||
topLevel,
|
||||
};
|
||||
const set2 = {
|
||||
A(),
|
||||
};
|
||||
const set3 = {
|
||||
B(),
|
||||
};
|
||||
const set4 = {
|
||||
C(),
|
||||
};
|
||||
const set5 = {
|
||||
0.5,
|
||||
};
|
||||
const map1 = {
|
||||
null: 0,
|
||||
Const(): 0,
|
||||
true: 0,
|
||||
0: 0,
|
||||
'': 0,
|
||||
#a: 0,
|
||||
const Symbol('b'): 0,
|
||||
Object: 0,
|
||||
[]: 0,
|
||||
{}: 0,
|
||||
{0}: 0,
|
||||
topLevel: 0,
|
||||
};
|
||||
const map2 = {
|
||||
A(): 0,
|
||||
};
|
||||
const map3 = {
|
||||
B(): 0,
|
||||
};
|
||||
const map4 = {
|
||||
C(): 0,
|
||||
};
|
||||
const map5 = {
|
||||
0.5: 0,
|
||||
};
|
|
@ -0,0 +1,141 @@
|
|||
class A {
|
||||
const A();
|
||||
int get hashCode => super.hashCode + 1;
|
||||
}
|
||||
|
||||
class B {
|
||||
bool operator ==(Object other) => super == other;
|
||||
const B();
|
||||
}
|
||||
|
||||
class C {
|
||||
bool operator ==(Object other) => super == other;
|
||||
const C();
|
||||
int get hashCode => super.hashCode + 1;
|
||||
}
|
||||
|
||||
class Const {
|
||||
const Const();
|
||||
}
|
||||
|
||||
const a1 = A() == Const();
|
||||
const a2 = Const() == A();
|
||||
const a3 = A() != Const();
|
||||
const a4 = Const() != A();
|
||||
const a5 = A() == null;
|
||||
const a6 = null == A();
|
||||
const a7 = A() != null;
|
||||
const a8 = null != A();
|
||||
const b1 = B() == Const();
|
||||
const b2 = Const() == B();
|
||||
const b3 = B() != Const();
|
||||
const b4 = Const() != B();
|
||||
const b5 = B() == null;
|
||||
const b6 = null == B();
|
||||
const b7 = B() != null;
|
||||
const b8 = null != B();
|
||||
const c1 = C() == Const();
|
||||
const c2 = Const() == C();
|
||||
const c3 = C() != Const();
|
||||
const c4 = Const() != C();
|
||||
const c5 = C() == null;
|
||||
const c6 = null == C();
|
||||
const c7 = C() != null;
|
||||
const c8 = null != C();
|
||||
const d1 = true == Const();
|
||||
const d2 = Const() == true;
|
||||
const d3 = true != Const();
|
||||
const d4 = Const() != true;
|
||||
const e1 = 0 == Const();
|
||||
const e2 = Const() == 0;
|
||||
const e3 = 0 != Const();
|
||||
const e4 = Const() != 0;
|
||||
const f1 = '' == Const();
|
||||
const f2 = Const() == '';
|
||||
const f3 = '' != Const();
|
||||
const f4 = Const() != '';
|
||||
const g1 = #a == Const();
|
||||
const g2 = Const() == #a;
|
||||
const g3 = #a != Const();
|
||||
const g4 = Const() != #a;
|
||||
const h1 = const Symbol('b') == Const();
|
||||
const h2 = Const() == const Symbol('b');
|
||||
const h3 = const Symbol('b') != Const();
|
||||
const h4 = Const() != const Symbol('b');
|
||||
const i1 = Object == Const();
|
||||
const i2 = Const() == Object;
|
||||
const i3 = Object != Const();
|
||||
const i4 = Const() != Object;
|
||||
const j1 = [] == Const();
|
||||
const j2 = Const() == [];
|
||||
const j3 = [] != Const();
|
||||
const j4 = Const() != [];
|
||||
const k1 = {} == Const();
|
||||
const k2 = Const() == {};
|
||||
const k3 = {} != Const();
|
||||
const k4 = Const() != {};
|
||||
const l1 = {0} == Const();
|
||||
const l2 = Const() == {0};
|
||||
const l3 = {0} != Const();
|
||||
const l4 = Const() != {0};
|
||||
const map1 = {
|
||||
null: 0,
|
||||
Const(): 0,
|
||||
true: 0,
|
||||
0: 0,
|
||||
'': 0,
|
||||
#a: 0,
|
||||
const Symbol('b'): 0,
|
||||
Object: 0,
|
||||
[]: 0,
|
||||
{}: 0,
|
||||
{0}: 0,
|
||||
topLevel: 0,
|
||||
};
|
||||
const map2 = {
|
||||
A(): 0,
|
||||
};
|
||||
const map3 = {
|
||||
B(): 0,
|
||||
};
|
||||
const map4 = {
|
||||
C(): 0,
|
||||
};
|
||||
const map5 = {
|
||||
0.5: 0,
|
||||
};
|
||||
const n1 = topLevel == Const();
|
||||
const n2 = Const() == topLevel;
|
||||
const n3 = topLevel != Const();
|
||||
const n4 = Const() != topLevel;
|
||||
const o1 = 0.5 == Const();
|
||||
const o2 = Const() == 0.5;
|
||||
const o3 = 0.5 != Const();
|
||||
const o4 = Const() != 0.5;
|
||||
const set1 = {
|
||||
null,
|
||||
Const(),
|
||||
true,
|
||||
0,
|
||||
'',
|
||||
#a,
|
||||
const Symbol('b'),
|
||||
Object,
|
||||
[],
|
||||
{},
|
||||
{0},
|
||||
topLevel,
|
||||
};
|
||||
const set2 = {
|
||||
A(),
|
||||
};
|
||||
const set3 = {
|
||||
B(),
|
||||
};
|
||||
const set4 = {
|
||||
C(),
|
||||
};
|
||||
const set5 = {
|
||||
0.5,
|
||||
};
|
||||
void topLevel() {}
|
|
@ -0,0 +1,305 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Error: Constant evaluation error:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:7: Context: While analyzing:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Error: Constant evaluation error:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:7: Context: While analyzing:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Error: Constant evaluation error:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:7: Context: While analyzing:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Error: Constant evaluation error:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:7: Context: While analyzing:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Error: Constant evaluation error:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:7: Context: While analyzing:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Error: Constant evaluation error:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:7: Context: While analyzing:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:14: Error: Constant evaluation error:
|
||||
// const set2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:125:3: Context: The element 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:7: Context: While analyzing:
|
||||
// const set2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:14: Error: Constant evaluation error:
|
||||
// const set3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:129:3: Context: The element 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:7: Context: While analyzing:
|
||||
// const set3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:14: Error: Constant evaluation error:
|
||||
// const set4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:133:3: Context: The element 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:7: Context: While analyzing:
|
||||
// const set4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:14: Error: Constant evaluation error:
|
||||
// const set5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:137:3: Context: The element '0.5' does not have a primitive equality.
|
||||
// 0.5, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:7: Context: While analyzing:
|
||||
// const set5 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:14: Error: Constant evaluation error:
|
||||
// const map2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:156:3: Context: The key 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:7: Context: While analyzing:
|
||||
// const map2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:14: Error: Constant evaluation error:
|
||||
// const map3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:160:3: Context: The key 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:7: Context: While analyzing:
|
||||
// const map3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:14: Error: Constant evaluation error:
|
||||
// const map4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:164:3: Context: The key 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:7: Context: While analyzing:
|
||||
// const map4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:14: Error: Constant evaluation error:
|
||||
// const map5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:168:3: Context: The key '0.5' does not have a primitive equality.
|
||||
// 0.5: 0, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:7: Context: While analyzing:
|
||||
// const map5 = {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Const extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::Const
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
class A extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::A
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
}
|
||||
class B extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::B
|
||||
: super core::Object::•()
|
||||
;
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
class C extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
static const field core::bool a1 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a2 = #C1;
|
||||
static const field core::bool a3 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a4 = #C2;
|
||||
static const field core::bool a5 = #C1;
|
||||
static const field core::bool a6 = #C1;
|
||||
static const field core::bool a7 = #C2;
|
||||
static const field core::bool a8 = #C2;
|
||||
static const field core::bool b1 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b2 = #C1;
|
||||
static const field core::bool b3 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b4 = #C2;
|
||||
static const field core::bool b5 = #C1;
|
||||
static const field core::bool b6 = #C1;
|
||||
static const field core::bool b7 = #C2;
|
||||
static const field core::bool b8 = #C2;
|
||||
static const field core::bool c1 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c2 = #C1;
|
||||
static const field core::bool c3 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c4 = #C2;
|
||||
static const field core::bool c5 = #C1;
|
||||
static const field core::bool c6 = #C1;
|
||||
static const field core::bool c7 = #C2;
|
||||
static const field core::bool c8 = #C2;
|
||||
static const field core::bool d1 = #C1;
|
||||
static const field core::bool d2 = #C1;
|
||||
static const field core::bool d3 = #C2;
|
||||
static const field core::bool d4 = #C2;
|
||||
static const field core::bool e1 = #C1;
|
||||
static const field core::bool e2 = #C1;
|
||||
static const field core::bool e3 = #C2;
|
||||
static const field core::bool e4 = #C2;
|
||||
static const field core::bool f1 = #C1;
|
||||
static const field core::bool f2 = #C1;
|
||||
static const field core::bool f3 = #C2;
|
||||
static const field core::bool f4 = #C2;
|
||||
static const field core::bool g1 = #C1;
|
||||
static const field core::bool g2 = #C1;
|
||||
static const field core::bool g3 = #C2;
|
||||
static const field core::bool g4 = #C2;
|
||||
static const field core::bool h1 = #C1;
|
||||
static const field core::bool h2 = #C1;
|
||||
static const field core::bool h3 = #C2;
|
||||
static const field core::bool h4 = #C2;
|
||||
static const field core::bool i1 = #C1;
|
||||
static const field core::bool i2 = #C1;
|
||||
static const field core::bool i3 = #C2;
|
||||
static const field core::bool i4 = #C2;
|
||||
static const field core::bool j1 = #C1;
|
||||
static const field core::bool j2 = #C1;
|
||||
static const field core::bool j3 = #C2;
|
||||
static const field core::bool j4 = #C2;
|
||||
static const field core::bool k1 = #C1;
|
||||
static const field core::bool k2 = #C1;
|
||||
static const field core::bool k3 = #C2;
|
||||
static const field core::bool k4 = #C2;
|
||||
static const field core::bool l1 = #C1;
|
||||
static const field core::bool l2 = #C1;
|
||||
static const field core::bool l3 = #C2;
|
||||
static const field core::bool l4 = #C2;
|
||||
static const field core::bool n1 = #C1;
|
||||
static const field core::bool n2 = #C1;
|
||||
static const field core::bool n3 = #C2;
|
||||
static const field core::bool n4 = #C2;
|
||||
static const field core::bool o1 = #C1;
|
||||
static const field core::bool o2 = #C1;
|
||||
static const field core::bool o3 = #C2;
|
||||
static const field core::bool o4 = #C2;
|
||||
static const field core::Set<core::Object?> set1 = #C14;
|
||||
static const field core::Set<self::A> set2 = invalid-expression "The element 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::B> set3 = invalid-expression "The element 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::C> set4 = invalid-expression "The element 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<core::double> set5 = invalid-expression "The element '0.5' does not have a primitive equality.";
|
||||
static const field core::Map<core::Object?, core::int> map1 = #C15;
|
||||
static const field core::Map<self::A, core::int> map2 = invalid-expression "The key 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::B, core::int> map3 = invalid-expression "The key 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::C, core::int> map4 = invalid-expression "The key 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<core::double, core::int> map5 = invalid-expression "The key '0.5' does not have a primitive equality.";
|
||||
static method topLevel() → void {}
|
||||
|
||||
constants {
|
||||
#C1 = false
|
||||
#C2 = true
|
||||
#C3 = null
|
||||
#C4 = self::Const {}
|
||||
#C5 = 0
|
||||
#C6 = ""
|
||||
#C7 = #a
|
||||
#C8 = #b
|
||||
#C9 = TypeLiteralConstant(core::Object*)
|
||||
#C10 = <dynamic>[]
|
||||
#C11 = <dynamic, dynamic>{}
|
||||
#C12 = <core::int*>{#C5}
|
||||
#C13 = static-tearoff self::topLevel
|
||||
#C14 = <core::Object?>{#C3, #C4, #C2, #C5, #C6, #C7, #C8, #C9, #C10, #C11, #C12, #C13}
|
||||
#C15 = <core::Object?, core::int*>{#C3:#C5, #C4:#C5, #C2:#C5, #C5:#C5, #C6:#C5, #C7:#C5, #C8:#C5, #C9:#C5, #C10:#C5, #C11:#C5, #C12:#C5, #C13:#C5}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///primitive_equality.dart:
|
||||
- A. (from org-dartlang-testcase:///primitive_equality.dart:12:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- Const. (from org-dartlang-testcase:///primitive_equality.dart:8:9)
|
||||
- B. (from org-dartlang-testcase:///primitive_equality.dart:17:9)
|
||||
- C. (from org-dartlang-testcase:///primitive_equality.dart:22:9)
|
|
@ -0,0 +1,305 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Error: Constant evaluation error:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:7: Context: While analyzing:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Error: Constant evaluation error:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:7: Context: While analyzing:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Error: Constant evaluation error:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:7: Context: While analyzing:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Error: Constant evaluation error:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:7: Context: While analyzing:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Error: Constant evaluation error:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:7: Context: While analyzing:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Error: Constant evaluation error:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:7: Context: While analyzing:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:14: Error: Constant evaluation error:
|
||||
// const set2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:125:3: Context: The element 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:7: Context: While analyzing:
|
||||
// const set2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:14: Error: Constant evaluation error:
|
||||
// const set3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:129:3: Context: The element 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:7: Context: While analyzing:
|
||||
// const set3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:14: Error: Constant evaluation error:
|
||||
// const set4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:133:3: Context: The element 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:7: Context: While analyzing:
|
||||
// const set4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:14: Error: Constant evaluation error:
|
||||
// const set5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:137:3: Context: The element '0.5' does not have a primitive equality.
|
||||
// 0.5, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:7: Context: While analyzing:
|
||||
// const set5 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:14: Error: Constant evaluation error:
|
||||
// const map2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:156:3: Context: The key 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:7: Context: While analyzing:
|
||||
// const map2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:14: Error: Constant evaluation error:
|
||||
// const map3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:160:3: Context: The key 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:7: Context: While analyzing:
|
||||
// const map3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:14: Error: Constant evaluation error:
|
||||
// const map4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:164:3: Context: The key 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:7: Context: While analyzing:
|
||||
// const map4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:14: Error: Constant evaluation error:
|
||||
// const map5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:168:3: Context: The key '0.5' does not have a primitive equality.
|
||||
// 0.5: 0, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:7: Context: While analyzing:
|
||||
// const map5 = {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Const extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::Const
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
class A extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::A
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
}
|
||||
class B extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::B
|
||||
: super core::Object::•()
|
||||
;
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
class C extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
static const field core::bool a1 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a2 = #C1;
|
||||
static const field core::bool a3 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a4 = #C2;
|
||||
static const field core::bool a5 = #C1;
|
||||
static const field core::bool a6 = #C1;
|
||||
static const field core::bool a7 = #C2;
|
||||
static const field core::bool a8 = #C2;
|
||||
static const field core::bool b1 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b2 = #C1;
|
||||
static const field core::bool b3 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b4 = #C2;
|
||||
static const field core::bool b5 = #C1;
|
||||
static const field core::bool b6 = #C1;
|
||||
static const field core::bool b7 = #C2;
|
||||
static const field core::bool b8 = #C2;
|
||||
static const field core::bool c1 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c2 = #C1;
|
||||
static const field core::bool c3 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c4 = #C2;
|
||||
static const field core::bool c5 = #C1;
|
||||
static const field core::bool c6 = #C1;
|
||||
static const field core::bool c7 = #C2;
|
||||
static const field core::bool c8 = #C2;
|
||||
static const field core::bool d1 = #C1;
|
||||
static const field core::bool d2 = #C1;
|
||||
static const field core::bool d3 = #C2;
|
||||
static const field core::bool d4 = #C2;
|
||||
static const field core::bool e1 = #C1;
|
||||
static const field core::bool e2 = #C1;
|
||||
static const field core::bool e3 = #C2;
|
||||
static const field core::bool e4 = #C2;
|
||||
static const field core::bool f1 = #C1;
|
||||
static const field core::bool f2 = #C1;
|
||||
static const field core::bool f3 = #C2;
|
||||
static const field core::bool f4 = #C2;
|
||||
static const field core::bool g1 = #C1;
|
||||
static const field core::bool g2 = #C1;
|
||||
static const field core::bool g3 = #C2;
|
||||
static const field core::bool g4 = #C2;
|
||||
static const field core::bool h1 = #C1;
|
||||
static const field core::bool h2 = #C1;
|
||||
static const field core::bool h3 = #C2;
|
||||
static const field core::bool h4 = #C2;
|
||||
static const field core::bool i1 = #C1;
|
||||
static const field core::bool i2 = #C1;
|
||||
static const field core::bool i3 = #C2;
|
||||
static const field core::bool i4 = #C2;
|
||||
static const field core::bool j1 = #C1;
|
||||
static const field core::bool j2 = #C1;
|
||||
static const field core::bool j3 = #C2;
|
||||
static const field core::bool j4 = #C2;
|
||||
static const field core::bool k1 = #C1;
|
||||
static const field core::bool k2 = #C1;
|
||||
static const field core::bool k3 = #C2;
|
||||
static const field core::bool k4 = #C2;
|
||||
static const field core::bool l1 = #C1;
|
||||
static const field core::bool l2 = #C1;
|
||||
static const field core::bool l3 = #C2;
|
||||
static const field core::bool l4 = #C2;
|
||||
static const field core::bool n1 = #C1;
|
||||
static const field core::bool n2 = #C1;
|
||||
static const field core::bool n3 = #C2;
|
||||
static const field core::bool n4 = #C2;
|
||||
static const field core::bool o1 = #C1;
|
||||
static const field core::bool o2 = #C1;
|
||||
static const field core::bool o3 = #C2;
|
||||
static const field core::bool o4 = #C2;
|
||||
static const field core::Set<core::Object?> set1 = #C14;
|
||||
static const field core::Set<self::A> set2 = invalid-expression "The element 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::B> set3 = invalid-expression "The element 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::C> set4 = invalid-expression "The element 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<core::double> set5 = invalid-expression "The element '0.5' does not have a primitive equality.";
|
||||
static const field core::Map<core::Object?, core::int> map1 = #C15;
|
||||
static const field core::Map<self::A, core::int> map2 = invalid-expression "The key 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::B, core::int> map3 = invalid-expression "The key 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::C, core::int> map4 = invalid-expression "The key 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<core::double, core::int> map5 = invalid-expression "The key '0.5' does not have a primitive equality.";
|
||||
static method topLevel() → void {}
|
||||
|
||||
constants {
|
||||
#C1 = false
|
||||
#C2 = true
|
||||
#C3 = null
|
||||
#C4 = self::Const {}
|
||||
#C5 = 0
|
||||
#C6 = ""
|
||||
#C7 = #a
|
||||
#C8 = #b
|
||||
#C9 = TypeLiteralConstant(core::Object*)
|
||||
#C10 = <dynamic>[]
|
||||
#C11 = <dynamic, dynamic>{}
|
||||
#C12 = <core::int*>{#C5}
|
||||
#C13 = static-tearoff self::topLevel
|
||||
#C14 = <core::Object?>{#C3, #C4, #C2, #C5, #C6, #C7, #C8, #C9, #C10, #C11, #C12, #C13}
|
||||
#C15 = <core::Object?, core::int*>{#C3:#C5, #C4:#C5, #C2:#C5, #C5:#C5, #C6:#C5, #C7:#C5, #C8:#C5, #C9:#C5, #C10:#C5, #C11:#C5, #C12:#C5, #C13:#C5}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///primitive_equality.dart:
|
||||
- A. (from org-dartlang-testcase:///primitive_equality.dart:12:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- Const. (from org-dartlang-testcase:///primitive_equality.dart:8:9)
|
||||
- B. (from org-dartlang-testcase:///primitive_equality.dart:17:9)
|
||||
- C. (from org-dartlang-testcase:///primitive_equality.dart:22:9)
|
|
@ -0,0 +1,199 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class Const extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::Const
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
class A extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::A
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
;
|
||||
}
|
||||
class B extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::B
|
||||
: super core::Object::•()
|
||||
;
|
||||
operator ==(core::Object other) → core::bool
|
||||
;
|
||||
}
|
||||
class C extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
;
|
||||
operator ==(core::Object other) → core::bool
|
||||
;
|
||||
}
|
||||
static const field core::bool a1 = const self::A::•() =={core::Object::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool a2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const self::A::•();
|
||||
static const field core::bool a3 = !(const self::A::•() =={core::Object::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool a4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const self::A::•());
|
||||
static const field core::bool a5 = const self::A::•() == null;
|
||||
static const field core::bool a6 = const self::A::•() == null;
|
||||
static const field core::bool a7 = !(const self::A::•() == null);
|
||||
static const field core::bool a8 = !(const self::A::•() == null);
|
||||
static const field core::bool b1 = const self::B::•() =={self::B::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool b2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const self::B::•();
|
||||
static const field core::bool b3 = !(const self::B::•() =={self::B::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool b4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const self::B::•());
|
||||
static const field core::bool b5 = const self::B::•() == null;
|
||||
static const field core::bool b6 = const self::B::•() == null;
|
||||
static const field core::bool b7 = !(const self::B::•() == null);
|
||||
static const field core::bool b8 = !(const self::B::•() == null);
|
||||
static const field core::bool c1 = const self::C::•() =={self::C::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool c2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const self::C::•();
|
||||
static const field core::bool c3 = !(const self::C::•() =={self::C::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool c4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const self::C::•());
|
||||
static const field core::bool c5 = const self::C::•() == null;
|
||||
static const field core::bool c6 = const self::C::•() == null;
|
||||
static const field core::bool c7 = !(const self::C::•() == null);
|
||||
static const field core::bool c8 = !(const self::C::•() == null);
|
||||
static const field core::bool d1 = true =={core::Object::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool d2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} true;
|
||||
static const field core::bool d3 = !(true =={core::Object::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool d4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} true);
|
||||
static const field core::bool e1 = 0 =={core::num::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool e2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} 0;
|
||||
static const field core::bool e3 = !(0 =={core::num::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool e4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} 0);
|
||||
static const field core::bool f1 = "" =={core::String::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool f2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} "";
|
||||
static const field core::bool f3 = !("" =={core::String::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool f4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} "");
|
||||
static const field core::bool g1 = #a =={core::Symbol::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool g2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} #a;
|
||||
static const field core::bool g3 = !(#a =={core::Symbol::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool g4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} #a);
|
||||
static const field core::bool h1 = const _in::Symbol::•("b") =={core::Symbol::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool h2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const _in::Symbol::•("b");
|
||||
static const field core::bool h3 = !(const _in::Symbol::•("b") =={core::Symbol::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool h4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const _in::Symbol::•("b"));
|
||||
static const field core::bool i1 = core::Object =={core::Type::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool i2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} core::Object;
|
||||
static const field core::bool i3 = !(core::Object =={core::Type::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool i4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} core::Object);
|
||||
static const field core::bool j1 = const <dynamic>[] =={core::List::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool j2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const <dynamic>[];
|
||||
static const field core::bool j3 = !(const <dynamic>[] =={core::List::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool j4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const <dynamic>[]);
|
||||
static const field core::bool k1 = const <dynamic, dynamic>{} =={core::Object::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool k2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const <dynamic, dynamic>{};
|
||||
static const field core::bool k3 = !(const <dynamic, dynamic>{} =={core::Object::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool k4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const <dynamic, dynamic>{});
|
||||
static const field core::bool l1 = const <core::int>{0} =={core::Object::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool l2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const <core::int>{0};
|
||||
static const field core::bool l3 = !(const <core::int>{0} =={core::Object::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool l4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} const <core::int>{0});
|
||||
static const field core::bool n1 = self::topLevel =={core::Object::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool n2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} self::topLevel;
|
||||
static const field core::bool n3 = !(self::topLevel =={core::Object::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool n4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} self::topLevel);
|
||||
static const field core::bool o1 = 0.5 =={core::num::==}{(core::Object) → core::bool} const self::Const::•();
|
||||
static const field core::bool o2 = const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} 0.5;
|
||||
static const field core::bool o3 = !(0.5 =={core::num::==}{(core::Object) → core::bool} const self::Const::•());
|
||||
static const field core::bool o4 = !(const self::Const::•() =={core::Object::==}{(core::Object) → core::bool} 0.5);
|
||||
static const field core::Set<core::Object?> set1 = const <core::Object?>{null, const self::Const::•(), true, 0, "", #a, const _in::Symbol::•("b"), core::Object, const <dynamic>[], const <dynamic, dynamic>{}, const <core::int>{0}, self::topLevel};
|
||||
static const field core::Set<self::A> set2 = const <self::A>{const self::A::•()};
|
||||
static const field core::Set<self::B> set3 = const <self::B>{const self::B::•()};
|
||||
static const field core::Set<self::C> set4 = const <self::C>{const self::C::•()};
|
||||
static const field core::Set<core::double> set5 = const <core::double>{0.5};
|
||||
static const field core::Map<core::Object?, core::int> map1 = const <core::Object?, core::int>{null: 0, const self::Const::•(): 0, true: 0, 0: 0, "": 0, #a: 0, const _in::Symbol::•("b"): 0, core::Object: 0, const <dynamic>[]: 0, const <dynamic, dynamic>{}: 0, const <core::int>{0}: 0, self::topLevel: 0};
|
||||
static const field core::Map<self::A, core::int> map2 = const <self::A, core::int>{const self::A::•(): 0};
|
||||
static const field core::Map<self::B, core::int> map3 = const <self::B, core::int>{const self::B::•(): 0};
|
||||
static const field core::Map<self::C, core::int> map4 = const <self::C, core::int>{const self::C::•(): 0};
|
||||
static const field core::Map<core::double, core::int> map5 = const <core::double, core::int>{0.5: 0};
|
||||
static method topLevel() → void
|
||||
;
|
||||
|
||||
|
||||
Extra constant evaluation status:
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:27:12 -> InstanceConstant(const A{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:27:19 -> InstanceConstant(const Const{})
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:28:20 -> BoolConstant(false)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:29:12 -> InstanceConstant(const A{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:29:19 -> InstanceConstant(const Const{})
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:30:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsNull @ org-dartlang-testcase:///primitive_equality.dart:31:16 -> BoolConstant(false)
|
||||
Evaluated: EqualsNull @ org-dartlang-testcase:///primitive_equality.dart:32:17 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:33:16 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:34:17 -> BoolConstant(true)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:36:12 -> InstanceConstant(const B{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:36:19 -> InstanceConstant(const Const{})
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:37:20 -> BoolConstant(false)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:38:12 -> InstanceConstant(const B{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:38:19 -> InstanceConstant(const Const{})
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:39:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsNull @ org-dartlang-testcase:///primitive_equality.dart:40:16 -> BoolConstant(false)
|
||||
Evaluated: EqualsNull @ org-dartlang-testcase:///primitive_equality.dart:41:17 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:42:16 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:43:17 -> BoolConstant(true)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:45:12 -> InstanceConstant(const C{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:45:19 -> InstanceConstant(const Const{})
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:46:20 -> BoolConstant(false)
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:47:12 -> InstanceConstant(const C{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:47:19 -> InstanceConstant(const Const{})
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:48:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsNull @ org-dartlang-testcase:///primitive_equality.dart:49:16 -> BoolConstant(false)
|
||||
Evaluated: EqualsNull @ org-dartlang-testcase:///primitive_equality.dart:50:17 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:51:16 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:52:17 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:54:17 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:55:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:56:17 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:57:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:59:14 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:60:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:61:14 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:62:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:64:15 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:65:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:66:15 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:67:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:69:15 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:70:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:71:15 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:72:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:74:30 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:75:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:76:30 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:77:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:79:19 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:80:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:81:19 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:82:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:84:15 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:85:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:86:15 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:87:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:89:15 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:90:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:91:15 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:92:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:94:16 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:95:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:96:16 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:97:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:99:21 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:100:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:101:21 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:102:20 -> BoolConstant(true)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:104:16 -> BoolConstant(false)
|
||||
Evaluated: EqualsCall @ org-dartlang-testcase:///primitive_equality.dart:105:20 -> BoolConstant(false)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:106:16 -> BoolConstant(true)
|
||||
Evaluated: Not @ org-dartlang-testcase:///primitive_equality.dart:107:20 -> BoolConstant(true)
|
||||
Evaluated: SetLiteral @ org-dartlang-testcase:///primitive_equality.dart:109:14 -> SetConstant(const <Object?>{null, const Const{}, true, 0, "", #a, #b, Object*, const <dynamic>[], const <dynamic, dynamic>{}, const <int*>{0}, topLevel})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:125:3 -> InstanceConstant(const A{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:129:3 -> InstanceConstant(const B{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:133:3 -> InstanceConstant(const C{})
|
||||
Evaluated: MapLiteral @ org-dartlang-testcase:///primitive_equality.dart:140:14 -> MapConstant(const <Object?, int*>{null: 0, const Const{}: 0, true: 0, 0: 0, "": 0, #a: 0, #b: 0, Object*: 0, const <dynamic>[]: 0, const <dynamic, dynamic>{}: 0, const <int*>{0}: 0, topLevel: 0})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:156:3 -> InstanceConstant(const A{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:160:3 -> InstanceConstant(const B{})
|
||||
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///primitive_equality.dart:164:3 -> InstanceConstant(const C{})
|
||||
Extra constant evaluation: evaluated: 99, effectively constant: 82
|
|
@ -0,0 +1,305 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Error: Constant evaluation error:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:27:7: Context: While analyzing:
|
||||
// const a1 = A() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Error: Constant evaluation error:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:16: Context: Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:29:7: Context: While analyzing:
|
||||
// const a3 = A() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Error: Constant evaluation error:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:36:7: Context: While analyzing:
|
||||
// const b1 = B() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Error: Constant evaluation error:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:16: Context: Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:38:7: Context: While analyzing:
|
||||
// const b3 = B() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Error: Constant evaluation error:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:45:7: Context: While analyzing:
|
||||
// const c1 = C() == Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Error: Constant evaluation error:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:16: Context: Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:47:7: Context: While analyzing:
|
||||
// const c3 = C() != Const(); // Error
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:14: Error: Constant evaluation error:
|
||||
// const set2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:125:3: Context: The element 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:124:7: Context: While analyzing:
|
||||
// const set2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:14: Error: Constant evaluation error:
|
||||
// const set3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:129:3: Context: The element 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:128:7: Context: While analyzing:
|
||||
// const set3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:14: Error: Constant evaluation error:
|
||||
// const set4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:133:3: Context: The element 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(), // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:132:7: Context: While analyzing:
|
||||
// const set4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:14: Error: Constant evaluation error:
|
||||
// const set5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:137:3: Context: The element '0.5' does not have a primitive equality.
|
||||
// 0.5, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:136:7: Context: While analyzing:
|
||||
// const set5 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:14: Error: Constant evaluation error:
|
||||
// const map2 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:156:3: Context: The key 'A {}' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// A(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:155:7: Context: While analyzing:
|
||||
// const map2 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:14: Error: Constant evaluation error:
|
||||
// const map3 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:160:3: Context: The key 'B {}' does not have a primitive equality.
|
||||
// - 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// B(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:159:7: Context: While analyzing:
|
||||
// const map3 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:14: Error: Constant evaluation error:
|
||||
// const map4 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:164:3: Context: The key 'C {}' does not have a primitive equality.
|
||||
// - 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.
|
||||
// C(): 0, // Error
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:163:7: Context: While analyzing:
|
||||
// const map4 = {
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:14: Error: Constant evaluation error:
|
||||
// const map5 = {
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:168:3: Context: The key '0.5' does not have a primitive equality.
|
||||
// 0.5: 0, // Error,
|
||||
// ^
|
||||
// pkg/front_end/testcases/patterns/primitive_equality.dart:167:7: Context: While analyzing:
|
||||
// const map5 = {
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Const extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::Const
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
class A extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::A
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
}
|
||||
class B extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::B
|
||||
: super core::Object::•()
|
||||
;
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
class C extends core::Object /*hasConstConstructor*/ {
|
||||
const constructor •() → self::C
|
||||
: super core::Object::•()
|
||||
;
|
||||
get hashCode() → core::int
|
||||
return super.{core::Object::hashCode}.{core::num::+}(1){(core::num) → core::int};
|
||||
operator ==(core::Object other) → core::bool
|
||||
return super.{core::Object::==}(other);
|
||||
}
|
||||
static const field core::bool a1 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a2 = #C1;
|
||||
static const field core::bool a3 = invalid-expression "Binary operator '==' requires receiver constant 'A {}' of a type with primitive equality or type 'double', but was of type 'A'.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool a4 = #C2;
|
||||
static const field core::bool a5 = #C1;
|
||||
static const field core::bool a6 = #C1;
|
||||
static const field core::bool a7 = #C2;
|
||||
static const field core::bool a8 = #C2;
|
||||
static const field core::bool b1 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b2 = #C1;
|
||||
static const field core::bool b3 = invalid-expression "Binary operator '==' requires receiver constant 'B {}' of a type with primitive equality or type 'double', but was of type 'B'.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool b4 = #C2;
|
||||
static const field core::bool b5 = #C1;
|
||||
static const field core::bool b6 = #C1;
|
||||
static const field core::bool b7 = #C2;
|
||||
static const field core::bool b8 = #C2;
|
||||
static const field core::bool c1 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c2 = #C1;
|
||||
static const field core::bool c3 = invalid-expression "Binary operator '==' requires receiver constant 'C {}' of a type with primitive equality or type 'double', but was of type 'C'.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::bool c4 = #C2;
|
||||
static const field core::bool c5 = #C1;
|
||||
static const field core::bool c6 = #C1;
|
||||
static const field core::bool c7 = #C2;
|
||||
static const field core::bool c8 = #C2;
|
||||
static const field core::bool d1 = #C1;
|
||||
static const field core::bool d2 = #C1;
|
||||
static const field core::bool d3 = #C2;
|
||||
static const field core::bool d4 = #C2;
|
||||
static const field core::bool e1 = #C1;
|
||||
static const field core::bool e2 = #C1;
|
||||
static const field core::bool e3 = #C2;
|
||||
static const field core::bool e4 = #C2;
|
||||
static const field core::bool f1 = #C1;
|
||||
static const field core::bool f2 = #C1;
|
||||
static const field core::bool f3 = #C2;
|
||||
static const field core::bool f4 = #C2;
|
||||
static const field core::bool g1 = #C1;
|
||||
static const field core::bool g2 = #C1;
|
||||
static const field core::bool g3 = #C2;
|
||||
static const field core::bool g4 = #C2;
|
||||
static const field core::bool h1 = #C1;
|
||||
static const field core::bool h2 = #C1;
|
||||
static const field core::bool h3 = #C2;
|
||||
static const field core::bool h4 = #C2;
|
||||
static const field core::bool i1 = #C1;
|
||||
static const field core::bool i2 = #C1;
|
||||
static const field core::bool i3 = #C2;
|
||||
static const field core::bool i4 = #C2;
|
||||
static const field core::bool j1 = #C1;
|
||||
static const field core::bool j2 = #C1;
|
||||
static const field core::bool j3 = #C2;
|
||||
static const field core::bool j4 = #C2;
|
||||
static const field core::bool k1 = #C1;
|
||||
static const field core::bool k2 = #C1;
|
||||
static const field core::bool k3 = #C2;
|
||||
static const field core::bool k4 = #C2;
|
||||
static const field core::bool l1 = #C1;
|
||||
static const field core::bool l2 = #C1;
|
||||
static const field core::bool l3 = #C2;
|
||||
static const field core::bool l4 = #C2;
|
||||
static const field core::bool n1 = #C1;
|
||||
static const field core::bool n2 = #C1;
|
||||
static const field core::bool n3 = #C2;
|
||||
static const field core::bool n4 = #C2;
|
||||
static const field core::bool o1 = #C1;
|
||||
static const field core::bool o2 = #C1;
|
||||
static const field core::bool o3 = #C2;
|
||||
static const field core::bool o4 = #C2;
|
||||
static const field core::Set<core::Object?> set1 = #C14;
|
||||
static const field core::Set<self::A> set2 = invalid-expression "The element 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::B> set3 = invalid-expression "The element 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<self::C> set4 = invalid-expression "The element 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Set<core::double> set5 = invalid-expression "The element '0.5' does not have a primitive equality.";
|
||||
static const field core::Map<core::Object?, core::int> map1 = #C15;
|
||||
static const field core::Map<self::A, core::int> map2 = invalid-expression "The key 'A {}' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::B, core::int> map3 = invalid-expression "The key 'B {}' does not have a primitive equality.
|
||||
- 'B' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<self::C, core::int> map4 = invalid-expression "The key 'C {}' does not have a primitive equality.
|
||||
- 'C' is from 'pkg/front_end/testcases/patterns/primitive_equality.dart'.";
|
||||
static const field core::Map<core::double, core::int> map5 = invalid-expression "The key '0.5' does not have a primitive equality.";
|
||||
static method topLevel() → void {}
|
||||
|
||||
constants {
|
||||
#C1 = false
|
||||
#C2 = true
|
||||
#C3 = null
|
||||
#C4 = self::Const {}
|
||||
#C5 = 0
|
||||
#C6 = ""
|
||||
#C7 = #a
|
||||
#C8 = #b
|
||||
#C9 = TypeLiteralConstant(core::Object*)
|
||||
#C10 = <dynamic>[]
|
||||
#C11 = <dynamic, dynamic>{}
|
||||
#C12 = <core::int*>{#C5}
|
||||
#C13 = static-tearoff self::topLevel
|
||||
#C14 = <core::Object?>{#C3, #C4, #C2, #C5, #C6, #C7, #C8, #C9, #C10, #C11, #C12, #C13}
|
||||
#C15 = <core::Object?, core::int*>{#C3:#C5, #C4:#C5, #C2:#C5, #C5:#C5, #C6:#C5, #C7:#C5, #C8:#C5, #C9:#C5, #C10:#C5, #C11:#C5, #C12:#C5, #C13:#C5}
|
||||
}
|
||||
|
||||
|
||||
Constructor coverage from constants:
|
||||
org-dartlang-testcase:///primitive_equality.dart:
|
||||
- A. (from org-dartlang-testcase:///primitive_equality.dart:12:9)
|
||||
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
|
||||
- Const. (from org-dartlang-testcase:///primitive_equality.dart:8:9)
|
||||
- B. (from org-dartlang-testcase:///primitive_equality.dart:17:9)
|
||||
- C. (from org-dartlang-testcase:///primitive_equality.dart:22:9)
|
|
@ -5,7 +5,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/issue50515.dart:11:11: Error: Constant evaluation error:
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
|
@ -21,7 +21,7 @@ class A extends core::Object /*hasConstConstructor*/ {
|
|||
return false;
|
||||
}
|
||||
static method test() → dynamic
|
||||
return invalid-expression "The element '(A {})' does not have a primitive operator '=='.
|
||||
return invalid-expression "The element '(A {})' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.";
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/issue50515.dart:11:11: Error: Constant evaluation error:
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
|
@ -21,7 +21,7 @@ class A extends core::Object /*hasConstConstructor*/ {
|
|||
return false;
|
||||
}
|
||||
static method test() → dynamic
|
||||
return invalid-expression "The element '(A {})' does not have a primitive operator '=='.
|
||||
return invalid-expression "The element '(A {})' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.";
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/issue50515.dart:11:11: Error: Constant evaluation error:
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
|
@ -21,7 +21,7 @@ class A extends core::Object /*hasConstConstructor*/ {
|
|||
return false;
|
||||
}
|
||||
static method test() → dynamic
|
||||
return invalid-expression "The element '(A {})' does not have a primitive operator '=='.
|
||||
return invalid-expression "The element '(A {})' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.";
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/issue50515.dart:11:11: Error: Constant evaluation error:
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
|
@ -21,7 +21,7 @@ class A extends core::Object /*hasConstConstructor*/ {
|
|||
return false;
|
||||
}
|
||||
static method test() → dynamic
|
||||
return invalid-expression "The element '(A {})' does not have a primitive operator '=='.
|
||||
return invalid-expression "The element '(A {})' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.";
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ library /*isNonNullableByDefault*/;
|
|||
// pkg/front_end/testcases/records/issue50515.dart:11:11: Error: Constant evaluation error:
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive operator '=='.
|
||||
// pkg/front_end/testcases/records/issue50515.dart:11:25: Context: The element '(A {})' does not have a primitive equality.
|
||||
// - 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.
|
||||
// test() => const <(A,)>{ (A(),) };
|
||||
// ^
|
||||
|
@ -21,7 +21,7 @@ class A extends core::Object /*hasConstConstructor*/ {
|
|||
return false;
|
||||
}
|
||||
static method test() → dynamic
|
||||
return invalid-expression "The element '(A {})' does not have a primitive operator '=='.
|
||||
return invalid-expression "The element '(A {})' does not have a primitive equality.
|
||||
- 'A' is from 'pkg/front_end/testcases/records/issue50515.dart'.";
|
||||
|
||||
|
||||
|
|
|
@ -30,58 +30,100 @@ class C {
|
|||
bool operator ==(Object other) => super == other;
|
||||
}
|
||||
|
||||
const aSet = <Object?>{
|
||||
const aSet1 = <Object?>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
0.5,
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
Duration(days: 2),
|
||||
//^^^^^^^^^^^^^^^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
A(),
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
B(),
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
C(),
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
(A(), false, 1),
|
||||
//^^^^^^^^^^^^^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aMap = <Object?, Null>{
|
||||
const aSet2 = <Object?>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
Duration(days: 2),
|
||||
//^^^^^^^^^^^^^^^^^
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aSet3 = <Object?>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
A(),
|
||||
//^^^
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aSet4 = <Object?>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
B(),
|
||||
//^^^
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aSet5 = <Object?>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
C(),
|
||||
//^^^
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aSet6 = <Object?>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
(A(), false, 1),
|
||||
//^^^^^^^^^^^^^^^
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aMap1 = <Object?, Null>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
0.5: null,
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_MAP_KEY_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aMap2 = <Object?, Null>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
Duration(days: 2): null,
|
||||
//^^^^^^^^^^^^^^^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_MAP_KEY_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aMap3 = <Object?, Null>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
A(): null,
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_MAP_KEY_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aMap4 = <Object?, Null>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
B(): null,
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_MAP_KEY_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aMap5 = <Object?, Null>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
C(): null,
|
||||
//^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_MAP_KEY_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
const aMap6 = <Object?, Null>{
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
(A(), false, 1): null,
|
||||
//^^^^^^^^^^^^^^^
|
||||
// [analyzer] unspecified
|
||||
// [cfe] unspecified
|
||||
// [analyzer] COMPILE_TIME_ERROR.CONST_MAP_KEY_NOT_PRIMITIVE_EQUALITY
|
||||
};
|
||||
|
||||
void main() {}
|
||||
|
|
|
@ -180,8 +180,6 @@ method<T>(o) {
|
|||
// ^
|
||||
// [analyzer] SYNTACTIC_ERROR.INVALID_CONSTANT_CONST_PREFIX
|
||||
// [cfe] The expression can't be prefixed by 'const' to form a constant pattern.
|
||||
// ^
|
||||
// [cfe] Constant evaluation error:
|
||||
case const <int>[] as List<T>: // Ok
|
||||
case const (1 + 2): // Ok
|
||||
case const (1 - 2): // Ok
|
||||
|
|
Loading…
Reference in a new issue