Skip to content

Latest commit

 

History

History
38 lines (32 loc) · 1.56 KB

new_language_feature.md

File metadata and controls

38 lines (32 loc) · 1.56 KB

Implementing a new language feature

When a new language feature is approved, a tracking issue will be created in order to track the work required in the analyzer package. Separate issues are created to track the work in the analysis_server, dartdoc, and linter packages.

Below is a template for the list of analyzer features that need to be reviewed to see whether they need to be enhanced in order to work correctly with the new feature. In almost all cases new tests will need to be written to ensure that the feature isn't broken when run over code that uses the new language feature. In some cases, new support will need to be added.

Separate issues should be created for each of the items in the list.

Template

The following is a list of the individual features that need to be considered. The features are listed roughly in dependency order.

  • AST enhancements (AstBuilder)
  • Resolution of directives
  • Element model
  • Type system updates
  • Summary support
  • Resolution
    • ResolutionVisitor (resolve types)
    • ScopeResolverVisitor (resolve simple identifiers by scope)
    • ResolverVisitor (type-based resolution)
  • Constant evaluation
  • Index and search
  • Warnings (annotation-based, unused*, strict-mode-based, a few others)
    • InheritanceOverrideVerifier (report errors and warnings related to overrides)
    • ErrorVerifier (report other errors and warnings)
    • FfiVerifier (report errors and warnings related to FFI)
    • Unused elements warnings
  • ExitDetector
  • NodeLintRegistry