// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'utils.dart'; /// Test that library flags are serialized and read correctly. void main() { void setSynthetic(Library lib, bool isSynthetic) { lib.isSynthetic = isSynthetic; } void verifySynthetic(Library lib, bool isSynthetic) { if (lib.isSynthetic != isSynthetic) { throw "Serialized and re-read library had change in synthetic flag."; } } void setNonNullableByDefault(Library lib, bool isNonNullableByDefault) { lib.isNonNullableByDefault = isNonNullableByDefault; } void verifyNonNullableByDefault(Library lib, bool isNonNullableByDefault) { if (lib.isNonNullableByDefault != isNonNullableByDefault) { throw "Serialized and re-read library had change in " "isNonNullableByDefault flag."; } } void setNonNullableByDefaultCompiledMode(Library lib, NonNullableByDefaultCompiledMode nonNullableByDefaultCompiledMode) { lib.nonNullableByDefaultCompiledMode = nonNullableByDefaultCompiledMode; } void verifyNonNullableByDefaultCompiledMode(Library lib, NonNullableByDefaultCompiledMode nonNullableByDefaultCompiledMode) { if (lib.nonNullableByDefaultCompiledMode != nonNullableByDefaultCompiledMode) { throw "Serialized and re-read library had change in " "nonNullableByDefaultCompiledMode flag."; } } int combination = 0; for (bool isSynthetic in [true, false]) { for (bool isNonNullableByDefault in [true, false]) { for (NonNullableByDefaultCompiledMode nonNullableByDefaultCompiledMode in [ NonNullableByDefaultCompiledMode.Weak, NonNullableByDefaultCompiledMode.Strong, NonNullableByDefaultCompiledMode.Agnostic, ]) { combination++; print("Checking combination #$combination (" "isSynthetic: $isSynthetic; " "isNonNullableByDefault: $isNonNullableByDefault; " "nonNullableByDefaultCompiledMode:" " $nonNullableByDefaultCompiledMode"); Uri uri = Uri.parse("foo://bar.dart"); Library lib = new Library(uri, fileUri: uri); setSynthetic(lib, isSynthetic); setNonNullableByDefault(lib, isNonNullableByDefault); setNonNullableByDefaultCompiledMode( lib, nonNullableByDefaultCompiledMode); Library lib2 = libRoundTrip(lib); verifySynthetic(lib2, isSynthetic); verifyNonNullableByDefault(lib2, isNonNullableByDefault); verifyNonNullableByDefaultCompiledMode( lib2, nonNullableByDefaultCompiledMode); } } } print("Done: Everything looks good."); }