Skip to content

Port scoping to Langium #540

@lars-reimann

Description

@lars-reimann
  • Data-driven test system (test: data-driven scope testing #546)
    • Specify source and target using comments (link them using a common name) and test markers
    • Ability to load multiple files at once
    • Ability to test that some cross-references cannot be resolved
    • Document how to add more tests
  • Scoping for imports
    • Qualified imports
    • Qualified import with alias
    • Wildcard imports
    • Default import of safeds.**.*
    • Default import of everything in same package
    • Explicit import shadows implicit import of declaration in same package
    • Declaration in own file shadows implicit import of safeds declarations
    • Declaration in own file shadows implicit import of declaration in same package
    • Declaration in own file shadows explicit import (?)
  • Scoping for annotation calls
    • Annotations in other files
  • Scoping for type parameter constraints
    • Target: Type parameter of class
    • Target: Type parameter of enum variant
    • Target: Type parameter of function
    • Enables references to type parameters of outer layers
  • Scoping for yield
  • Scoping for arguments
    • Arguments of calls
    • Arguments of annotation calls
  • Scoping for references
    • Target: Local variable
      • Prevent forward references to local variables
      • Enable closures (access to local variables of outer layers)
    • Target: Parameter
      • Enable closures (access to parameters of outer layers)
    • Target: Class
    • Target: Enum
    • Target: Global function
    • Target: Schema
    • Target: Pipeline
    • Target: Segment
      • Take visibility modifiers into account
    • Target: Instance attribute
    • Target: Static attribute
    • Target: Nested class (in another class)
    • Target: Nested enum (in another class)
    • Target: Instance method
    • Target: Static method
    • Target: Result
    • Target: Enum variant
    • Target: Parameter of enum variant
    • Target: Members of containing class from default value (?)
    • Target: Containing classes from default value (?)
    • Target: Members of containing class from annotation call argument (?)
    • Target: Containing classes from annotation call argument (?)
    • Target: Previous parameter from default value (?)
    • Prevent references to following parameters from default values: fun f(p: Int = q, q: Int = p)
    • Prevent references to type parameters
    • Inheritance
    • Overriding
    • Shadowing
    • Hiding of static members
  • Scoping for named types
    • Target: Class
    • Target: Enum
    • Target: Enum variant
    • Target: Type parameter
    • In parent type lists + Test scoping within class #29
    • Named type declarations in other files
  • Scoping for type arguments
    • Type arguments of named type

Metadata

Metadata

Assignees

Labels

releasedIncluded in a release

Type

No type

Projects

Status

✔️ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions