dart-sdk/pkg/front_end
Paul Berry 8da75ede06 Shared type analysis: simplify handling of patterns.
Patterns may need to be visited twice during analysis: once to
determine a type schema, and a second type to resolve the pattern
match.  Previously, the shared TypeAnalyzer had just a single
`dispatchPattern` method, so it had to create temporary objects to
record the structure of the patterns between the two visits.  Now,
there are two dispatch methods: `dispatchPatternSchema` and
`dispatchPattern`.  This avoids the creation of a bunch of temporary
objects and makes the design much simpler.

(Based on an idea from Brian Wilkerson)

Change-Id: If10b6b7fb578594c3f660baa55d7e28123652638
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/260282
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2022-09-22 22:41:32 +00:00
..
benchmarks
lib Add an experiment flag for patterns. 2022-09-22 19:56:38 +00:00
outline_extraction_testcases [CFE] Remove many uses of .packages files in tests 2022-06-22 07:34:49 +00:00
parser_testcases [parser] Empty record types, record types with 1 element 2022-08-30 11:04:10 +00:00
test Shared type analysis: simplify handling of patterns. 2022-09-22 22:41:32 +00:00
testcases [cfe] Handle structurally constant record literals 2022-09-21 14:19:16 +00:00
tool [CFE] Duplicate code finder experiment take #1 2022-09-16 08:56:50 +00:00
analysis_options.yaml
analysis_options_no_lints.yaml
error_recovery.yaml
LICENSE
messages.status [pkg:js] Add type/conformance checking for createStaticInteropMock 2022-09-16 20:13:30 +00:00
messages.yaml [pkg:js] Add type/conformance checking for createStaticInteropMock 2022-09-16 20:13:30 +00:00
OWNERS
PRESUBMIT.py
pubspec.yaml [pkg] prefer 'any' deps for package dev dependencies 2022-05-27 01:34:59 +00:00
README.md
testing.json [cfe] Remove language version from inference testcases 2022-07-08 12:52:19 +00:00
testing_with_lints.json

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 dart analyze command-line tool to analyze their Dart code.

Integrators that want to write tools that analyze Dart code should use the analyzer package.

Note: A previous version of this package was published on pub.dev. It has now been marked DISCONTINUED as it is not intended for direct consumption, as per the notes above.