Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit a9d5833

Browse files
author
Dart CI
committed
Version 2.12.0-12.0.dev
Merge commit '416cfa7c41f50b50f5a502ba179e5b45ef08dbca' into 'dev'
2 parents 2c91e89 + 416cfa7 commit a9d5833

24 files changed

+637
-50
lines changed

pkg/analyzer/lib/src/test_utilities/mock_sdk.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'dart:convert';
66

77
import 'package:analyzer/file_system/file_system.dart';
88
import 'package:analyzer/file_system/memory_file_system.dart';
9+
import 'package:analyzer/src/dart/analysis/experiments.dart';
910
import 'package:analyzer/src/dart/sdk/sdk.dart';
1011
import 'package:analyzer/src/generated/sdk.dart';
1112
import 'package:analyzer/src/generated/source.dart';
@@ -1103,7 +1104,10 @@ class MockSdk implements DartSdk {
11031104
_versionFile = resourceProvider
11041105
.getFolder(resourceProvider.convertPath(sdkRoot))
11051106
.getChildAssumingFile('version');
1106-
_versionFile.writeAsStringSync('2.12.0');
1107+
_versionFile.writeAsStringSync(
1108+
'${ExperimentStatus.currentVersion.major}.'
1109+
'${ExperimentStatus.currentVersion.minor}.0',
1110+
);
11071111

11081112
for (MockSdkLibrary library in _LIBRARIES) {
11091113
var convertedLibrary = library._toProvider(resourceProvider);

pkg/front_end/lib/src/fasta/builder/procedure_builder.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,7 @@ class RedirectingFactoryBuilder extends ProcedureBuilderImpl {
793793
List<Expression> positionalArguments = <Expression>[];
794794
for (VariableDeclaration parameter
795795
in member.function.positionalParameters) {
796+
inferrer.flowAnalysis?.declare(parameter, true);
796797
positionalArguments.add(new VariableGetImpl(
797798
parameter,
798799
inferrer.typePromoter.getFactForAccess(parameter, 0),
@@ -802,6 +803,7 @@ class RedirectingFactoryBuilder extends ProcedureBuilderImpl {
802803
List<NamedExpression> namedArguments = <NamedExpression>[];
803804
for (VariableDeclaration parameter
804805
in member.function.namedParameters) {
806+
inferrer.flowAnalysis?.declare(parameter, true);
805807
namedArguments.add(new NamedExpression(
806808
parameter.name,
807809
new VariableGetImpl(

pkg/front_end/lib/src/fasta/kernel/body_builder.dart

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,8 @@ class BodyBuilder extends ScopeListener<JumpTarget>
319319

320320
/// List of built type aliased generative constructor invocations that
321321
/// require unaliasing.
322-
final List<ConstructorInvocation> typeAliasedConstructorInvocations =
323-
<ConstructorInvocation>[];
322+
final List<TypeAliasedConstructorInvocationJudgment>
323+
typeAliasedConstructorInvocations = [];
324324

325325
/// List of built type aliased factory constructor invocations that require
326326
/// unaliasing.
@@ -1244,11 +1244,24 @@ class BodyBuilder extends ScopeListener<JumpTarget>
12441244
}
12451245

12461246
void _unaliasTypeAliasedConstructorInvocations() {
1247-
for (ConstructorInvocation invocation
1247+
for (TypeAliasedConstructorInvocationJudgment invocation
12481248
in typeAliasedConstructorInvocations) {
1249-
// TODO(eernst): Should replace aliased constructor invocations,
1250-
// such that back ends don't see instance creations on type aliases.
1251-
invocation.replaceWith(new NullLiteral());
1249+
DartType unaliasedType = new TypedefType(
1250+
invocation.typeAliasBuilder.typedef,
1251+
Nullability.nonNullable,
1252+
invocation.arguments.types)
1253+
.unalias;
1254+
List<DartType> invocationTypeArguments = null;
1255+
if (unaliasedType is InterfaceType) {
1256+
invocationTypeArguments = unaliasedType.typeArguments;
1257+
}
1258+
Arguments invocationArguments = new ArgumentsImpl(
1259+
invocation.arguments.positional,
1260+
types: invocationTypeArguments,
1261+
named: invocation.arguments.named);
1262+
invocation.replaceWith(new ConstructorInvocation(
1263+
invocation.target, invocationArguments,
1264+
isConst: invocation.isConst));
12521265
}
12531266
typeAliasedConstructorInvocations.clear();
12541267
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
abstract class A<T> {
6+
factory A(T value) = _A;
7+
}
8+
9+
class _A<T> implements A<T> {
10+
_A(T value);
11+
}
12+
13+
abstract class B<T> {
14+
factory B(int value) = _B;
15+
}
16+
17+
class _B<T> implements B<T> {
18+
_B(int value);
19+
}
20+
21+
main() {}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
import "dart:core" as core;
4+
5+
abstract class A<T extends core::Object? = dynamic> extends core::Object {
6+
static field dynamic _redirecting# = <dynamic>[self::A::•]/*isNullableByDefault*/;
7+
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
8+
let dynamic #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
9+
}
10+
class _A<T extends core::Object? = dynamic> extends core::Object implements self::A<self::_A::T%> {
11+
constructor •(self::_A::T% value) → self::_A<self::_A::T%>
12+
;
13+
}
14+
abstract class B<T extends core::Object? = dynamic> extends core::Object {
15+
static field dynamic _redirecting# = <dynamic>[self::B::•]/*isNullableByDefault*/;
16+
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
17+
let dynamic #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
18+
}
19+
class _B<T extends core::Object? = dynamic> extends core::Object implements self::B<self::_B::T%> {
20+
constructor •(core::int value) → self::_B<self::_B::T%>
21+
;
22+
}
23+
static method main() → dynamic
24+
;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
import "dart:core" as core;
4+
5+
abstract class A<T extends core::Object? = dynamic> extends core::Object {
6+
static field dynamic _redirecting# = <dynamic>[self::A::•]/*isNullableByDefault*/;
7+
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
8+
let dynamic #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
9+
}
10+
class _A<T extends core::Object? = dynamic> extends core::Object implements self::A<self::_A::T%> {
11+
constructor •(self::_A::T% value) → self::_A<self::_A::T%>
12+
: super core::Object::•()
13+
;
14+
}
15+
abstract class B<T extends core::Object? = dynamic> extends core::Object {
16+
static field dynamic _redirecting# = <dynamic>[self::B::•]/*isNullableByDefault*/;
17+
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
18+
let dynamic #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
19+
}
20+
class _B<T extends core::Object? = dynamic> extends core::Object implements self::B<self::_B::T%> {
21+
constructor •(core::int value) → self::_B<self::_B::T%>
22+
: super core::Object::•()
23+
;
24+
}
25+
static method main() → dynamic {}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
import "dart:core" as core;
4+
5+
abstract class A<T extends core::Object? = dynamic> extends core::Object {
6+
static field dynamic _redirecting# = <dynamic>[self::A::•]/*isNullableByDefault*/;
7+
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
8+
let<BottomType> #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
9+
}
10+
class _A<T extends core::Object? = dynamic> extends core::Object implements self::A<self::_A::T%> {
11+
constructor •(self::_A::T% value) → self::_A<self::_A::T%>
12+
: super core::Object::•()
13+
;
14+
}
15+
abstract class B<T extends core::Object? = dynamic> extends core::Object {
16+
static field dynamic _redirecting# = <dynamic>[self::B::•]/*isNullableByDefault*/;
17+
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
18+
let<BottomType> #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
19+
}
20+
class _B<T extends core::Object? = dynamic> extends core::Object implements self::B<self::_B::T%> {
21+
constructor •(core::int value) → self::_B<self::_B::T%>
22+
: super core::Object::•()
23+
;
24+
}
25+
static method main() → dynamic {}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
abstract class A<T> {
2+
factory A(T value) = _A;
3+
}
4+
5+
class _A<T> implements A<T> {
6+
_A(T value);
7+
}
8+
9+
abstract class B<T> {
10+
factory B(int value) = _B;
11+
}
12+
13+
class _B<T> implements B<T> {
14+
_B(int value);
15+
}
16+
17+
main() {}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
abstract class A<T> {
2+
factory A(T value) = _A;
3+
}
4+
5+
abstract class B<T> {
6+
factory B(int value) = _B;
7+
}
8+
9+
class _A<T> implements A<T> {
10+
_A(T value);
11+
}
12+
13+
class _B<T> implements B<T> {
14+
_B(int value);
15+
}
16+
17+
main() {}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
library /*isNonNullableByDefault*/;
2+
import self as self;
3+
import "dart:core" as core;
4+
5+
abstract class A<T extends core::Object? = dynamic> extends core::Object {
6+
static field dynamic _redirecting# = <dynamic>[self::A::•]/*isNullableByDefault*/;
7+
static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
8+
let dynamic #redirecting_factory = self::_A::• in let self::A::•::T% #typeArg0 = null in invalid-expression;
9+
}
10+
class _A<T extends core::Object? = dynamic> extends core::Object implements self::A<self::_A::T%> {
11+
constructor •(self::_A::T% value) → self::_A<self::_A::T%>
12+
: super core::Object::•()
13+
;
14+
}
15+
abstract class B<T extends core::Object? = dynamic> extends core::Object {
16+
static field dynamic _redirecting# = <dynamic>[self::B::•]/*isNullableByDefault*/;
17+
static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
18+
let dynamic #redirecting_factory = self::_B::• in let self::B::•::T% #typeArg0 = null in invalid-expression;
19+
}
20+
class _B<T extends core::Object? = dynamic> extends core::Object implements self::B<self::_B::T%> {
21+
constructor •(core::int value) → self::_B<self::_B::T%>
22+
: super core::Object::•()
23+
;
24+
}
25+
static method main() → dynamic {}

0 commit comments

Comments
 (0)