Ignore:
Timestamp:
Oct 6, 2023, 2:58:48 PM (9 months ago)
Author:
Michael Brooks <mlbrooks@…>
Branches:
master
Children:
500a60f
Parents:
0860d9c
Message:

Fix compiler bug where duplicate type declarations caused crash.

And add missing test. The test runs and fails with the previous cfa compiler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Validate/NoIdSymbolTable.hpp

    r0860d9c r4d860ea3  
    2020namespace Validate {
    2121
    22 // A SymbolTable that only has the operations used in the Translate Dimension
    23 // pass. More importantly, it doesn't have some methods that should no be
     22// A SymbolTable that only tracks names relevant to Validate passes.
     23// It tracks type names but not identifier names.
     24// Some of the canonicalization that occurs before the resolver
     25// affects how identifier name errors get reported to the user.
     26// The Validate phase needs to chase type names,
     27// but it is too early to try tracking identifier names.
     28// Identifier skipping is acheived by omitting methods that should not be
    2429// called by the Pass template (lookupId and addId).
    2530class NoIdSymbolTable {
    2631        ast::SymbolTable base;
    2732public:
     33        // All names that are tracked (now) are eligible for collision validation (now).
     34        // (Names that are only tracked later get their collision validation then.)
     35        NoIdSymbolTable() : base(ast::SymbolTable::ValidateOnAdd) {}
     36
    2837#       define FORWARD_X( func, types_and_names, just_names ) \
    2938        inline auto func types_and_names -> decltype( base.func just_names ) { \
Note: See TracChangeset for help on using the changeset viewer.