This refactoring achieves the following: - Collect the integer operation semantics into one place instead of having it sprinkled all over the constant evaluator with many "if (targetingJavaScript)" tests. - Avoid emitting the internal JavaScriptIntConstant node, which is serialized as normal DoubleConstant nodes, thus achieving parity between direct consumers and consumers seeing output that has been serialized. - Implement the JavaScript semantics for unsigned right shift. - Fix truncating divide with a result outside int64 range incorrectly clamping the result for JS targets. - Fix positive hex constants >= 2^63 through int.fromEnvironment producing negative values in dart2js. - Clarify in Kernel documentation how numeric constants are represented on VM vs JS targets. Change-Id: If30bb2c2c77c54eff120b611b059c2ec726c99a0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116525 Reviewed-by: Mayank Patke <fishythefish@google.com>
Front end for Dart
This package provides a low-level API for use by compiler back ends that wish to implement the Dart language. It is intended for eventual use by dev_compiler, dart2js, and the Dart VM. In addition, it will share implementation details with the analyzer package--this will be accomplished by having the analyzer package import (and re-export) parts of this package's private implementation.
End-users should use the [dartanalyzer][analyzercli] command-line tool to analyze their Dart code.
Integrators that want to write tools that analyze Dart code should use the [analyzer] package.
Note: The APIs in this package are in an early state; developers should be careful about depending on this package. In particular, there is no semver contract for release versions of this package. Please depend directly on individual versions.