Skip to content

Split out experimental analysis #14531

Closed
@ekpyron

Description

@ekpyron

Split out a first batch of technical infrastructure of #14510 into a PR targetting develop.

Parts that should go into the new PR:

  • The new scanner kind ScannerKind::ExperimentalSolidity and the surrounding scanner changes (including the small change to libyul/AsmParser). Only the tokens NonExperimentalEnd and ExperimentalEnd need to be extracted.
  • A stub version of experimental/analysis/Analysis without any annotation logic and with only a check function that always reports an error "experimental analysis not yet implemented" and returns false.
  • The changes to CompilerStack, i.e. a special path for experimental solidity, invoking `experimental/analysis/Analysis``
    • Including the assertion in CompilerStack::compile and a similar assertion in CompilerStack::generateIR (instead of invoking experimental::IRGenerator just put in a failing assertion as well)

What does not have to be moved right away:

  • Additional tokens
  • Changes to the parser
  • Changes to the NameAndTypeResolver and ReferenceResolver
  • Generally, none of the changes to the currnet analysis steps (like in SyntaxChecker)
  • The additional AST nodes and their annotations and visitor logic
  • The actual logic of experimental/analysis/Analysis.* - we can start from a stub that just always fails, see above
  • The actual analysis steps in experimental/analysis/*
  • Code generation or AST experimental/ast, experimental/codegen

This will cause the existing experimental solidity import tests to fail, but that's fine to accept on develop for now.

Metadata

Metadata

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions