| // Copyright (c) 2015, 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. |
| |
| // Test that the hint on empty combinators works as intended. |
| |
| import 'dart:async'; |
| import 'package:async_helper/async_helper.dart'; |
| import 'package:expect/expect.dart'; |
| import 'package:compiler/src/commandline_options.dart'; |
| import 'package:compiler/src/compiler.dart'; |
| import 'memory_compiler.dart'; |
| |
| const SOURCE = const { |
| 'show_local.dart': """ |
| import 'lib.dart' show Foo; |
| |
| main() {} |
| """, |
| 'hide_local.dart': """ |
| import 'lib.dart' hide Foo; |
| |
| main() {} |
| """, |
| 'show_package.dart': """ |
| import 'package:pkg/pkg.dart' show Foo; |
| |
| main() {} |
| """, |
| 'hide_package.dart': """ |
| import 'package:pkg/pkg.dart' hide Foo; |
| |
| main() {} |
| """, |
| 'lib.dart': '', |
| 'pkg/pkg/pkg.dart': '', |
| }; |
| |
| Future<Compiler> test(Uri entryPoint, |
| {bool showPackageWarnings: false, |
| bool suppressHints: false, |
| int hints: 0, |
| Compiler cachedCompiler}) async { |
| print('=================================================================='); |
| print('test: $entryPoint showPackageWarnings=$showPackageWarnings ' |
| 'suppressHints=$suppressHints'); |
| var options = [Flags.analyzeOnly]; |
| if (showPackageWarnings) { |
| options.add(Flags.showPackageWarnings); |
| } |
| if (suppressHints) { |
| options.add(Flags.suppressHints); |
| } |
| var collector = new DiagnosticCollector(); |
| CompilationResult result = await runCompiler( |
| entryPoint: entryPoint, |
| memorySourceFiles: SOURCE, |
| options: options, |
| packageRoot: Uri.parse('memory:pkg/'), |
| diagnosticHandler: collector, |
| cachedCompiler: cachedCompiler); |
| Expect.equals( |
| 0, collector.errors.length, 'Unexpected errors: ${collector.errors}'); |
| Expect.equals(0, collector.warnings.length, |
| 'Unexpected warnings: ${collector.warnings}'); |
| Expect.equals( |
| hints, collector.hints.length, 'Unexpected hints: ${collector.hints}'); |
| Expect.equals( |
| 0, collector.infos.length, 'Unexpected infos: ${collector.infos}'); |
| print('=================================================================='); |
| return result.compiler; |
| } |
| |
| Future<Compiler> testUri(Uri entrypoint, |
| {bool suppressed: false, Compiler cachedCompiler}) async { |
| cachedCompiler = await test(entrypoint, |
| showPackageWarnings: true, |
| suppressHints: false, |
| hints: 1, |
| cachedCompiler: cachedCompiler); |
| cachedCompiler = await test(entrypoint, |
| showPackageWarnings: false, |
| suppressHints: false, |
| hints: suppressed ? 0 : 1, |
| cachedCompiler: cachedCompiler); |
| cachedCompiler = await test(entrypoint, |
| showPackageWarnings: true, |
| suppressHints: true, |
| hints: 0, |
| cachedCompiler: cachedCompiler); |
| cachedCompiler = await test(entrypoint, |
| showPackageWarnings: false, |
| suppressHints: true, |
| hints: 0, |
| cachedCompiler: cachedCompiler); |
| return cachedCompiler; |
| } |
| |
| void main() { |
| asyncTest(() async { |
| Compiler cachedCompiler = |
| await testUri(Uri.parse('memory:show_local.dart')); |
| cachedCompiler = await testUri(Uri.parse('memory:hide_local.dart'), |
| cachedCompiler: cachedCompiler); |
| cachedCompiler = await testUri(Uri.parse('memory:show_package.dart'), |
| cachedCompiler: cachedCompiler); |
| cachedCompiler = await testUri(Uri.parse('memory:hide_package.dart'), |
| suppressed: true, cachedCompiler: cachedCompiler); |
| }); |
| } |