diff --git a/generator/lib/src/element.dart b/generator/lib/src/element.dart index 54ccf4d92..bc40feb0f 100644 --- a/generator/lib/src/element.dart +++ b/generator/lib/src/element.dart @@ -20,7 +20,6 @@ import 'dart:math'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/ast/ast.dart'; -import 'package:analyzer/dart/constant/value.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:realm_generator/src/annotation_value.dart'; import 'package:realm_generator/src/expanded_context_span.dart'; diff --git a/generator/lib/src/error.dart b/generator/lib/src/error.dart index 23d72118a..6e95367fa 100644 --- a/generator/lib/src/error.dart +++ b/generator/lib/src/error.dart @@ -43,7 +43,7 @@ class RealmInvalidGenerationSourceError extends InvalidGenerationSourceError { color = color ?? session.color, super(message, todo: todo, element: element) { if (element is FieldElement || element is ConstructorElement) { - final classElement = element.enclosingElement3!; + final classElement = element.enclosingElement!; this.secondarySpans.addAll({ classElement.span!: "in realm model for '${session.mapping.entries.where((e) => e.value == classElement).singleOrNull?.key}'", }); diff --git a/generator/lib/src/field_element_ex.dart b/generator/lib/src/field_element_ex.dart index e84859432..f47b188e1 100644 --- a/generator/lib/src/field_element_ex.dart +++ b/generator/lib/src/field_element_ex.dart @@ -51,7 +51,7 @@ extension FieldElementEx on FieldElement { TypeAnnotation? get typeAnnotation => declarationAstNode.fields.type; - Expression? get initializerExpression => declarationAstNode.fields.variables.singleWhere((v) => v.name2.toString() == name).initializer; + Expression? get initializerExpression => declarationAstNode.fields.variables.singleWhere((v) => v.name.toString() == name).initializer; FileSpan? typeSpan(SourceFile file) => ExpandedContextSpan( ExpandedContextSpan( @@ -187,17 +187,17 @@ extension FieldElementEx on FieldElement { String? linkOriginProperty; // Validate field type - final modelSpan = enclosingElement3.span!; + final modelSpan = enclosingElement.span!; final file = modelSpan.file; final realmType = type.realmType; if (realmType == null) { - final notARealmTypeSpan = type.element2?.span; + final notARealmTypeSpan = type.element?.span; String todo; if (notARealmTypeSpan != null) { todo = // "Add a @RealmModel annotation on '$mappedTypeName', " "or an @Ignored annotation on '$displayName'."; - } else if (type.isDynamic && mappedTypeName != 'dynamic' && !mappedTypeName.startsWith(session.prefix)) { + } else if (session.mapping['_$mappedTypeName'] != null) { todo = "Did you intend to use _$mappedTypeName as type for '$displayName'?"; } else { todo = "Remove the invalid field or add an @Ignored annotation on '$displayName'."; @@ -209,7 +209,7 @@ extension FieldElementEx on FieldElement { primarySpan: typeSpan(file), primaryLabel: '$modelTypeName is not a realm model type', secondarySpans: { - modelSpan: "in realm model '${enclosingElement3.displayName}'", + modelSpan: "in realm model '${enclosingElement.displayName}'", // may go both above and below, or stem from another file if (notARealmTypeSpan != null) notARealmTypeSpan: '' }, @@ -244,7 +244,7 @@ extension FieldElementEx on FieldElement { primarySpan: typeSpan(file), primaryLabel: 'Set element type is not supported', element: this, - todo: 'Ensure set element type ${typeArgument} is a type supported by RealmSet.'); + todo: 'Ensure set element type $typeArgument is a type supported by RealmSet.'); } if (realmType == RealmPropertyType.mixed && typeArgument.isNullable) { @@ -280,7 +280,7 @@ extension FieldElementEx on FieldElement { final sourceFieldName = backlink.value.getField('fieldName')?.toSymbolValue(); final sourceType = (type as ParameterizedType).typeArguments.first; - final sourceField = (sourceType.element2 as ClassElement?)?.fields.where((f) => f.name == sourceFieldName).singleOrNull; + final sourceField = (sourceType.element as ClassElement?)?.fields.where((f) => f.name == sourceFieldName).singleOrNull; if (sourceField == null) { throw RealmInvalidGenerationSourceError( @@ -292,7 +292,7 @@ extension FieldElementEx on FieldElement { ); } - final thisType = (enclosingElement3 as ClassElement).thisType; + final thisType = (enclosingElement as ClassElement).thisType; final linkType = thisType.asNullable; final listOf = session.typeProvider.listType(thisType); if (sourceField.type != linkType && sourceField.type != listOf) { diff --git a/generator/lib/src/pseudo_type.dart b/generator/lib/src/pseudo_type.dart index 308cc7e0b..ae45280c3 100644 --- a/generator/lib/src/pseudo_type.dart +++ b/generator/lib/src/pseudo_type.dart @@ -55,5 +55,5 @@ class PseudoType extends TypeImpl { Element? get element2 => null; @override - Element? get element => _never; + Element? get element => null; } diff --git a/generator/lib/src/realm_field_info.dart b/generator/lib/src/realm_field_info.dart index 876bd0c43..0260b0365 100644 --- a/generator/lib/src/realm_field_info.dart +++ b/generator/lib/src/realm_field_info.dart @@ -61,7 +61,7 @@ class RealmFieldInfo { String get basicNonNullableMappedTypeName => type.basicType.asNonNullable.mappedName; String get basicRealmTypeName => - fieldElement.modelType.basicType.asNonNullable.element2?.remappedRealmName ?? fieldElement.modelType.asNonNullable.basicMappedName; + fieldElement.modelType.basicType.asNonNullable.element?.remappedRealmName ?? fieldElement.modelType.asNonNullable.basicMappedName; String get modelTypeName => fieldElement.modelTypeName; diff --git a/generator/pubspec.yaml b/generator/pubspec.yaml index f1211c76f..b40a516e7 100644 --- a/generator/pubspec.yaml +++ b/generator/pubspec.yaml @@ -15,7 +15,7 @@ environment: sdk: ^3.0.2 dependencies: - analyzer: ^5.0.0 + analyzer: ^5.13.0 build_resolvers: ^2.0.9 build: ^2.0.0 dart_style: ^2.2.0 diff --git a/generator/test/error_test_data/missing_underscore.dart b/generator/test/error_test_data/missing_underscore.dart index 0f5e7f480..235e07709 100644 --- a/generator/test/error_test_data/missing_underscore.dart +++ b/generator/test/error_test_data/missing_underscore.dart @@ -1,6 +1,7 @@ import 'package:realm_common/realm_common.dart'; -part 'missing_underscore.g.dart'; +// part 'missing_underscore.g.dart'; +class Other {} // dummy stand-in for the generated class @RealmModel() class _Bad { diff --git a/generator/test/error_test_data/missing_underscore.expected b/generator/test/error_test_data/missing_underscore.expected index a7006e8b1..0aa4f3d67 100644 --- a/generator/test/error_test_data/missing_underscore.expected +++ b/generator/test/error_test_data/missing_underscore.expected @@ -1,12 +1,15 @@ Not a realm type -in: asset:pkg/test/error_test_data/missing_underscore.dart:7:8 - ╷ -5 │ @RealmModel() -6 │ class _Bad { - │ ━━━━ in realm model for 'Bad' -7 │ late Other other; - │ ^^^^^ Other is not a realm model type - ╵ -Did you intend to use _Other as type for 'other'? +in: asset:pkg/test/error_test_data/missing_underscore.dart:8:8 + ╷ +4 │ class Other {} // dummy stand-in for the generated class + │ ━━━━━ +... │ +6 │ @RealmModel() +7 │ class _Bad { + │ ━━━━ in realm model for 'Bad' +8 │ late Other other; + │ ^^^^^ Other is not a realm model type + ╵ +Add a @RealmModel annotation on 'Other', or an @Ignored annotation on 'other'.