[fasta] Commandline option to leave environment constants unevaluated.
Also, outdated description of -D option corrected.
Change-Id: Ie1dc011adc3ce2f5293826c96f22700a6528c9a7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96880
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
index 973ec6e..574152c 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -3329,7 +3329,10 @@
-Dname
-Dname=value
- Ignored for now.
+ Define an environment variable in the compile-time environment.
+
+ --no-defines
+ Ignore all -D options and leave environment constants unevaluated.
--
Stop option parsing, the rest of the command line is assumed to be
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 4c4c0a9..195f967 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1538,7 +1538,10 @@
-Dname
-Dname=value
- Ignored for now.
+ Define an environment variable in the compile-time environment.
+
+ --no-defines
+ Ignore all -D options and leave environment constants unevaluated.
--
Stop option parsing, the rest of the command line is assumed to be
diff --git a/pkg/front_end/tool/_fasta/command_line.dart b/pkg/front_end/tool/_fasta/command_line.dart
index 385d151..ae7650d 100644
--- a/pkg/front_end/tool/_fasta/command_line.dart
+++ b/pkg/front_end/tool/_fasta/command_line.dart
@@ -251,6 +251,7 @@
"--legacy": "--legacy-mode",
"--legacy-mode": false,
"--libraries-json": Uri,
+ "--no-defines": false,
"--output": Uri,
"--packages": Uri,
"--platform": Uri,
@@ -310,6 +311,8 @@
"Valid targets are:\n ${targets.keys.join("\n ")}");
}
+ final bool noDefines = options["--no-defines"];
+
final bool enableAsserts = options["--enable-asserts"];
final bool verify = options["--verify"];
@@ -385,7 +388,7 @@
..verify = verify
..bytecode = bytecode
..experimentalFlags = experimentalFlags
- ..environmentDefines = parsedArguments.defines,
+ ..environmentDefines = noDefines ? null : parsedArguments.defines,
inputs: <Uri>[Uri.parse(arguments[0])],
output: resolveInputUri(arguments[3]));
} else if (arguments.isEmpty) {
@@ -421,7 +424,7 @@
..verbose = verbose
..verify = verify
..experimentalFlags = experimentalFlags
- ..environmentDefines = parsedArguments.defines;
+ ..environmentDefines = noDefines ? null : parsedArguments.defines;
// TODO(ahe): What about chase dependencies?