Skip to content

Commit 0281f9c

Browse files
Dmitry Stefantsovcommit-bot@chromium.org
authored andcommitted
[cfe] Add members to construct nullability in Library and LibraryBuilder
Change-Id: Iaaa9cf0c5a5789e6b303d646c5ed7fb6eed15b9b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117155 Reviewed-by: Johnni Winther <[email protected]>
1 parent 6a27310 commit 0281f9c

File tree

3 files changed

+41
-7
lines changed

3 files changed

+41
-7
lines changed

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
library fasta.library_builder;
66

7-
import 'package:kernel/ast.dart' show Library;
7+
import 'package:kernel/ast.dart' show Library, Nullability;
88

99
import '../combinator.dart' show Combinator;
1010

@@ -275,6 +275,23 @@ abstract class LibraryBuilder extends ModifierBuilder {
275275
// TODO(38287): Compute the predicate using the library version instead.
276276
bool get isNonNullableByDefault => loader.target.enableNonNullable;
277277

278+
Nullability get nullable {
279+
return isNonNullableByDefault ? Nullability.nullable : Nullability.legacy;
280+
}
281+
282+
Nullability get nonNullable {
283+
return isNonNullableByDefault
284+
? Nullability.nonNullable
285+
: Nullability.legacy;
286+
}
287+
288+
Nullability nullableIfTrue(bool isNullable) {
289+
if (isNonNullableByDefault) {
290+
return isNullable ? Nullability.nullable : Nullability.nonNullable;
291+
}
292+
return Nullability.legacy;
293+
}
294+
278295
NullabilityBuilder computeNullabilityFromToken(bool markedAsNullable) {
279296
if (!isNonNullableByDefault) {
280297
return const NullabilityBuilder.legacy();

pkg/kernel/binary.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ type Name {
228228
}
229229

230230
type Library {
231-
Byte flags (isExternal, isSynthetic, isNonNullableOptedIn);
231+
Byte flags (isExternal, isSynthetic, isNonNullableByDefault);
232232
UInt languageVersionMajor;
233233
UInt languageVersionMinor;
234234
CanonicalNameReference canonicalName;

pkg/kernel/lib/ast.dart

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ class Library extends NamedNode
330330

331331
static const int ExternalFlag = 1 << 0;
332332
static const int SyntheticFlag = 1 << 1;
333-
static const int NonNullableOptedInFlag = 1 << 2;
333+
static const int NonNullableByDefaultFlag = 1 << 2;
334334

335335
int flags = 0;
336336

@@ -355,11 +355,11 @@ class Library extends NamedNode
355355
flags = value ? (flags | SyntheticFlag) : (flags & ~SyntheticFlag);
356356
}
357357

358-
bool get isNonNullableOptedIn => (flags & NonNullableOptedInFlag) != 0;
359-
void set isNonNullableOptedIn(bool value) {
358+
bool get isNonNullableByDefault => (flags & NonNullableByDefaultFlag) != 0;
359+
void set isNonNullableByDefault(bool value) {
360360
flags = value
361-
? (flags | NonNullableOptedInFlag)
362-
: (flags & ~NonNullableOptedInFlag);
361+
? (flags | NonNullableByDefaultFlag)
362+
: (flags & ~NonNullableByDefaultFlag);
363363
}
364364

365365
String name;
@@ -420,6 +420,23 @@ class Library extends NamedNode
420420
setParents(this.fields, this);
421421
}
422422

423+
Nullability get nullable {
424+
return isNonNullableByDefault ? Nullability.nullable : Nullability.legacy;
425+
}
426+
427+
Nullability get nonNullable {
428+
return isNonNullableByDefault
429+
? Nullability.nonNullable
430+
: Nullability.legacy;
431+
}
432+
433+
Nullability nullableIfTrue(bool isNullable) {
434+
if (isNonNullableByDefault) {
435+
return isNullable ? Nullability.nullable : Nullability.nonNullable;
436+
}
437+
return Nullability.legacy;
438+
}
439+
423440
/// Returns the top-level fields and procedures defined in this library.
424441
///
425442
/// This getter is for convenience, not efficiency. Consider manually

0 commit comments

Comments
 (0)