421db9c69c
(was reverted in https://dart-review.googlesource.com/c/sdk/+/40980 due to an analyzer bot breakage) Original commit message: Implement proper checking for callability of Function class. There was some old (incorrect) logic for doing this, behind the flag enableStrictCallChecks. This flag has been removed, since the new behavior is now standard in Dart 2.0. Fixes #31509 Change-Id: Ice5cf38bbc648badf7f2563ff930b69f9a799635 Reviewed-on: https://dart-review.googlesource.com/41120 Reviewed-by: Jonas Termansen <sortie@google.com> Commit-Queue: Paul Berry <paulberry@google.com>
89 lines
3.7 KiB
Dart
89 lines
3.7 KiB
Dart
// Copyright (c) 2016, 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 'dart:io';
|
|
import 'package:analyzer/analyzer.dart';
|
|
import 'package:analyzer/src/command_line/arguments.dart';
|
|
import 'package:analyzer/src/summary/summary_sdk.dart';
|
|
import 'package:path/path.dart' as path;
|
|
import 'package:test/test.dart';
|
|
|
|
import '../../lib/src/analyzer/context.dart';
|
|
import '../../lib/src/analyzer/command.dart';
|
|
import '../../lib/src/analyzer/module_compiler.dart';
|
|
import '../testing.dart' show repoDirectory, testDirectory;
|
|
|
|
/// The `test/options` directory.
|
|
final optionsDir = path.join(testDirectory, 'options');
|
|
|
|
/// Summary file for testing.
|
|
final sdkSummaryFile = path.join(repoDirectory, 'gen', 'sdk', 'ddc_sdk.sum');
|
|
|
|
final sdkSummaryArgs = ['--$sdkSummaryPathOption', sdkSummaryFile];
|
|
|
|
main() {
|
|
test('basic', () {
|
|
var options = new AnalyzerOptions.basic();
|
|
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
|
|
var processors = compiler.context.analysisOptions.errorProcessors;
|
|
expect(processors, hasLength(1));
|
|
expect(processors[0].code, CompileTimeErrorCode.UNDEFINED_CLASS.name);
|
|
});
|
|
|
|
test('basic sdk summary', () {
|
|
expect(new File(sdkSummaryFile).existsSync(), isTrue);
|
|
var options = new AnalyzerOptions.basic(dartSdkSummaryPath: sdkSummaryFile);
|
|
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
|
|
var context = compiler.context;
|
|
var sdk = context.sourceFactory.dartSdk;
|
|
expect(sdk, new isInstanceOf<SummaryBasedDartSdk>());
|
|
var processors = context.analysisOptions.errorProcessors;
|
|
expect(processors, hasLength(1));
|
|
expect(processors[0].code, CompileTimeErrorCode.UNDEFINED_CLASS.name);
|
|
});
|
|
|
|
test('fromArgs', () {
|
|
var args = <String>[];
|
|
//TODO(danrubel) remove sdkSummaryArgs once all SDKs have summary file
|
|
args.addAll(sdkSummaryArgs);
|
|
var argResults = ddcArgParser().parse(args);
|
|
var options = new AnalyzerOptions.fromArguments(argResults);
|
|
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
|
|
var processors = compiler.context.analysisOptions.errorProcessors;
|
|
expect(processors, hasLength(1));
|
|
expect(processors[0].code, CompileTimeErrorCode.UNDEFINED_CLASS.name);
|
|
});
|
|
|
|
test('fromArgs options file 2', () {
|
|
var optionsFile2 = path.join(optionsDir, 'analysis_options_2.yaml');
|
|
expect(new File(optionsFile2).existsSync(), isTrue);
|
|
var args = <String>['--$analysisOptionsFileOption', optionsFile2];
|
|
//TODO(danrubel) remove sdkSummaryArgs once all SDKs have summary file
|
|
args.addAll(sdkSummaryArgs);
|
|
var argResults = ddcArgParser().parse(args);
|
|
var options = new AnalyzerOptions.fromArguments(argResults);
|
|
var compiler = new ModuleCompiler(options, analysisRoot: optionsDir);
|
|
var processors = compiler.context.analysisOptions.errorProcessors;
|
|
expect(processors, hasLength(1));
|
|
expect(processors[0].code, CompileTimeErrorCode.DUPLICATE_DEFINITION.name);
|
|
});
|
|
|
|
test('custom module name for summary', () {
|
|
var args = <String>[
|
|
'-snormal',
|
|
'-scustom/path=module',
|
|
'-sanother',
|
|
'--summary=custom/path2=module2'
|
|
];
|
|
|
|
var argResults = ddcArgParser().parse(args);
|
|
var options = new AnalyzerOptions.fromArguments(argResults);
|
|
expect(options.summaryPaths,
|
|
orderedEquals(['normal', 'custom/path', 'another', 'custom/path2']));
|
|
expect(options.customSummaryModules['custom/path'], equals('module'));
|
|
expect(options.customSummaryModules['custom/path2'], equals('module2'));
|
|
expect(options.customSummaryModules.containsKey('normal'), isFalse);
|
|
});
|
|
}
|