| Index: lib/src/options.dart
|
| diff --git a/lib/src/options.dart b/lib/src/options.dart
|
| index 5494632dec716d92b7164cc45ed7064dc7494480..3dcd1fa6079ee61d0ed1b22a18df66c8d095c025 100644
|
| --- a/lib/src/options.dart
|
| +++ b/lib/src/options.dart
|
| @@ -27,31 +27,25 @@ class ResolverOptions {
|
| final bool inferFromOverrides;
|
| static const inferFromOverridesDefault = false;
|
|
|
| - /// Whether to infer types for consts and static fields by looking at
|
| - /// identifiers on the RHS. For example, in a constant declaration like:
|
| + /// Whether to infer types for consts and fields by looking at initializers on
|
| + /// the RHS. For example, in a constant declaration like:
|
| ///
|
| /// const A = B;
|
| ///
|
| /// We can infer the type of `A` based on the type of `B`. The current
|
| - /// implementation of this inference is limited and will only work if `B` is
|
| - /// defined in a different library than `A`. Because this might be surprising
|
| - /// to users, this is turned off by default.
|
| + /// implementation of this inference is limited to ensure the answer is
|
| + /// deterministic when applying inference on library cycles. In the example
|
| + /// above, `A` is inferred to have `B`'s declared type if they are both in the
|
| + /// same library cycle. However, if `B`'s definition is not in the same
|
| + /// connected component as `A`, we use `B`'s inferred type instead.
|
| + ///
|
| + /// Because this might be surprising to users, this is turned off by default.
|
| + /// In the future, inference might track dependencies between variables in
|
| + /// more detail so that, in the example above, we can use `B`'s inferred type
|
| + /// always.
|
| final bool inferStaticsFromIdentifiers;
|
| static const inferStaticsFromIdentifiersDefault = false;
|
|
|
| - /// Whether to ignore ordering issues and do a best effort in inference. When
|
| - /// false, inference of top-levels and statics is limited to only consider
|
| - /// expressions in the RHS for which the type is known precisely without
|
| - /// regard of the ordering in which we apply inference. Turning this flag on
|
| - /// will consider more expressions, including expressions where the RHS is
|
| - /// another identifier (which [inferStaticsFromIdentifiers]).
|
| - ///
|
| - /// Note: this option is experimental will be removed once we have a proper
|
| - /// implementation of inference in the future, which should handle all
|
| - /// ordering concerns.
|
| - final bool inferInNonStableOrder;
|
| - static const inferInNonStableOrderDefault = false;
|
| -
|
| /// Restrict inference of fields and top-levels to those that are final and
|
| /// const.
|
| final bool onlyInferConstsAndFinalFields;
|
| @@ -61,7 +55,6 @@ class ResolverOptions {
|
| this.packagePaths: const <String>[],
|
| this.inferFromOverrides: inferFromOverridesDefault,
|
| this.inferStaticsFromIdentifiers: inferStaticsFromIdentifiersDefault,
|
| - this.inferInNonStableOrder: inferInNonStableOrderDefault,
|
| this.onlyInferConstsAndFinalFields: onlyInferConstAndFinalFieldsDefault});
|
| }
|
|
|
| @@ -181,10 +174,6 @@ class CompilerOptions implements RulesOptions, ResolverOptions, JSCodeOptions {
|
| @override
|
| final bool inferStaticsFromIdentifiers;
|
|
|
| - /// Whether to ignore ordering issue, and do a best effort in inference.
|
| - @override
|
| - final bool inferInNonStableOrder;
|
| -
|
| /// Restrict inference of fields and top-levels to those that are final and
|
| /// const.
|
| @override
|
| @@ -212,7 +201,6 @@ class CompilerOptions implements RulesOptions, ResolverOptions, JSCodeOptions {
|
| this.packagePaths: const <String>[],
|
| this.inferFromOverrides: ResolverOptions.inferFromOverridesDefault,
|
| this.inferStaticsFromIdentifiers: ResolverOptions.inferStaticsFromIdentifiersDefault,
|
| - this.inferInNonStableOrder: ResolverOptions.inferInNonStableOrderDefault,
|
| this.onlyInferConstsAndFinalFields: ResolverOptions.onlyInferConstAndFinalFieldsDefault,
|
| this.nonnullableTypes: TypeOptions.NONNULLABLE_TYPES, this.help: false,
|
| this.useMockSdk: false, this.dartSdkPath, this.logLevel: Level.SEVERE,
|
| @@ -248,7 +236,6 @@ CompilerOptions parseOptions(List<String> argv) {
|
| packagePaths: args['package-paths'].split(','),
|
| inferFromOverrides: args['infer-from-overrides'],
|
| inferStaticsFromIdentifiers: args['infer-transitively'],
|
| - inferInNonStableOrder: args['infer-eagerly'],
|
| onlyInferConstsAndFinalFields: args['infer-only-finals'],
|
| nonnullableTypes: optionsToList(args['nonnullable'],
|
| defaultValue: TypeOptions.NONNULLABLE_TYPES),
|
| @@ -291,11 +278,6 @@ final ArgParser argParser = new ArgParser()
|
| ..addFlag('infer-only-finals',
|
| help: 'Do not infer non-const or non-final fields',
|
| defaultsTo: ResolverOptions.onlyInferConstAndFinalFieldsDefault)
|
| - ..addFlag('infer-eagerly',
|
| - help: 'experimental: allows a non-stable order of transitive inference on'
|
| - ' consts and fields. This is used to test for possible inference with a '
|
| - 'proper implementation in the future.',
|
| - defaultsTo: ResolverOptions.inferInNonStableOrderDefault)
|
|
|
| // input/output options
|
| ..addOption('out', abbr: 'o', help: 'Output directory', defaultsTo: null)
|
|
|