Skip to content

Commit

Permalink
[cfe] Add SynthesizedTypeBuilder
Browse files Browse the repository at this point in the history
Change-Id: I6e5d5c836bfe79f3eae110d828ccc10f3a1547ae
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/379281
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
  • Loading branch information
johnniwinther authored and Commit Queue committed Aug 22, 2024
1 parent 8c07aa5 commit c1283a3
Show file tree
Hide file tree
Showing 47 changed files with 1,952 additions and 1,734 deletions.
58 changes: 47 additions & 11 deletions pkg/front_end/lib/src/builder/fixed_type_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@

import 'package:kernel/ast.dart';
import 'package:kernel/class_hierarchy.dart';
import 'package:kernel/src/bounds_checks.dart' show VarianceCalculationValue;

import '../base/problems.dart';
import '../source/builder_factory.dart';
import '../source/type_parameter_scope_builder.dart';
import '../kernel/type_algorithms.dart';
import '../source/source_loader.dart';
import 'declaration_builders.dart';
import 'library_builder.dart';
import 'nullability_builder.dart';
Expand All @@ -22,15 +23,6 @@ class FixedTypeBuilderImpl extends FixedTypeBuilder {

const FixedTypeBuilderImpl(this.type, this.fileUri, this.charOffset);

@override
// Coverage-ignore(suite): Not run.
TypeBuilder clone(
List<NamedTypeBuilder> newTypes,
BuilderFactory builderFactory,
TypeParameterScopeBuilder contextDeclaration) {
return this;
}

@override
// Coverage-ignore(suite): Not run.
TypeName? get typeName => null;
Expand Down Expand Up @@ -61,6 +53,7 @@ class FixedTypeBuilderImpl extends FixedTypeBuilder {
}

@override
// Coverage-ignore(suite): Not run.
DartType buildAliased(
LibraryBuilder library, TypeUse typeUse, ClassHierarchyBase? hierarchy) {
return type;
Expand Down Expand Up @@ -95,4 +88,47 @@ class FixedTypeBuilderImpl extends FixedTypeBuilder {
{required Map<TypeVariableBuilder, TraversalState>
typeVariablesTraversalState}) =>
type.nullability;

@override
// Coverage-ignore(suite): Not run.
VarianceCalculationValue computeTypeVariableBuilderVariance(
NominalVariableBuilder variable,
{required SourceLoader sourceLoader}) {
return VarianceCalculationValue.calculatedUnrelated;
}

@override
TypeDeclarationBuilder? computeUnaliasedDeclaration(
{required bool isUsedAsClass}) {
throw new UnsupportedError('$runtimeType.computeUnaliasedDeclaration');
}

@override
// Coverage-ignore(suite): Not run.
void collectReferencesFrom(Map<TypeVariableBuilder, int> variableIndices,
List<List<int>> edges, int index) {}

@override
// Coverage-ignore(suite): Not run.
TypeBuilder? substituteRange(
Map<TypeVariableBuilder, TypeBuilder> upperSubstitution,
Map<TypeVariableBuilder, TypeBuilder> lowerSubstitution,
List<TypeBuilder> unboundTypes,
List<StructuralVariableBuilder> unboundTypeVariables,
{Variance variance = Variance.covariant}) {
return null;
}

@override
// Coverage-ignore(suite): Not run.
TypeBuilder? unaliasAndErase() => this;

@override
// Coverage-ignore(suite): Not run.
bool usesTypeVariables(Set<String> typeVariableNames) => false;

@override
// Coverage-ignore(suite): Not run.
List<TypeWithInBoundReferences> findRawTypesWithInboundReferences() =>
const [];
}
27 changes: 1 addition & 26 deletions pkg/front_end/lib/src/builder/formal_parameter_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,11 @@ import '../base/scope.dart' show LookupScope;
import '../kernel/body_builder.dart' show BodyBuilder;
import '../kernel/body_builder_context.dart';
import '../kernel/internal_ast.dart' show VariableDeclarationImpl;
import '../source/constructor_declaration.dart';
import '../source/builder_factory.dart';
import '../source/constructor_declaration.dart';
import '../source/source_factory_builder.dart';
import '../source/source_field_builder.dart';
import '../source/source_library_builder.dart';
import '../source/type_parameter_scope_builder.dart';
import 'builder.dart';
import 'constructor_builder.dart';
import 'declaration_builders.dart';
Expand All @@ -48,11 +47,6 @@ abstract class ParameterBuilder {
bool get isRequiredNamed;

String? get name;

ParameterBuilder clone(
List<NamedTypeBuilder> newTypes,
BuilderFactory builderFactory,
TypeParameterScopeBuilder contextDeclaration);
}

/// A builder for a formal parameter, i.e. a parameter on a method or
Expand Down Expand Up @@ -186,15 +180,6 @@ class FormalParameterBuilder extends ModifierBuilderImpl
}
}

@override
ParameterBuilder clone(
List<NamedTypeBuilder> newTypes,
BuilderFactory builderFactory,
TypeParameterScopeBuilder contextDeclaration) {
return new FunctionTypeParameterBuilder(
kind, type.clone(newTypes, builderFactory, contextDeclaration), name);
}

FormalParameterBuilder forPrimaryConstructor(BuilderFactory builderFactory) {
return new FormalParameterBuilder(kind, modifiers | initializingFormalMask,
builderFactory.addInferableType(), name, null, charOffset,
Expand Down Expand Up @@ -316,16 +301,6 @@ class FunctionTypeParameterBuilder implements ParameterBuilder {

FunctionTypeParameterBuilder(this.kind, this.type, this.name);

@override
// Coverage-ignore(suite): Not run.
ParameterBuilder clone(
List<NamedTypeBuilder> newTypes,
BuilderFactory builderFactory,
TypeParameterScopeBuilder contextDeclaration) {
return new FunctionTypeParameterBuilder(
kind, type.clone(newTypes, builderFactory, contextDeclaration), name);
}

@override
bool get isNamed => kind.isNamed;

Expand Down
Loading

0 comments on commit c1283a3

Please sign in to comment.