Changeset 0dd9a5e for src/AST


Ignore:
Timestamp:
Nov 10, 2020, 3:14:14 AM (4 years ago)
Author:
Fangren Yu <f37yu@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
3ff4c1e
Parents:
18f0b70
Message:

delay autogen resolve

Location:
src/AST
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Pass.impl.hpp

    r18f0b70 r0dd9a5e  
    423423                }
    424424                catch( SemanticErrorException &e ) {
    425                         errors.append( e );
     425                        if (__pass::onError (visitor.core, *i, 0))
     426                                errors.append( e );
    426427                }
    427428
  • src/AST/Pass.proto.hpp

    r18f0b70 r0dd9a5e  
    266266        static void endTrace(core_t &, long) {}
    267267
     268        // Allows visitor to handle an error on top-level declarations, and possibly suppress the error.
     269        // If onError() returns false, the error will be ignored. By default, it returns true.
     270
     271        template< typename core_t >
     272        static bool onError (core_t &, ptr<Decl> &, long) { return true; }
     273
     274        template< typename core_t >
     275        static auto onError (core_t & core, ptr<Decl> & decl, int) -> decltype(core.onError(decl)) {
     276                return core.onError(decl);
     277        }
     278
    268279        // Another feature of the templated visitor is that it calls beginScope()/endScope() for compound statement.
    269280        // All passes which have such functions are assumed desire this behaviour
Note: See TracChangeset for help on using the changeset viewer.