Skip to content

Commit 5aa7103

Browse files
Work around analyzer API breakages
1 parent 14379c8 commit 5aa7103

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

lib/src/builder/parsing/ast_util.dart

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,27 @@ extension TypeAnnotationNameHelper on TypeAnnotation {
6868
/// Extension built on [NameHelper] to allow for easy access to the `name`
6969
/// field of [Identifier]s.
7070
extension TypeNameHelper on NamedType {
71+
// Backwards compatibility for various analyzer versions that remove name/name2.
72+
dynamic get name => name2;
73+
dynamic get name2 => name;
74+
dynamic get _name => name;
75+
String get nameLexeme {
76+
final name = this._name;
77+
if (name is Identifier) return name.name;
78+
if (name is Token) return name.lexeme;
79+
if (name is String) return name;
80+
throw UnimplementedError('Unexpected type for name: ${name.runtimeType}');
81+
}
82+
7183
/// The type name without any namespace prefixes.
72-
String get nameWithoutPrefix => name2.lexeme;
84+
String get nameWithoutPrefix => nameLexeme;
7385

7486
/// The type name including the namespace prefix.
7587
String get nameWithPrefix {
7688
final prefix = importPrefix?.name.lexeme;
77-
final name = name2.lexeme;
7889
return [
7990
if (prefix != null) prefix,
80-
name,
91+
nameLexeme,
8192
].join('.');
8293
}
8394
}

0 commit comments

Comments
 (0)