Skip to content
Snippets Groups Projects
  • Argyrios Kyrtzidis's avatar
    c56fff7f
    [Preprocessor/Modules] Separate the macro directives kinds into their own... · c56fff7f
    Argyrios Kyrtzidis authored
    [Preprocessor/Modules] Separate the macro directives kinds into their own MacroDirective's subclasses.
    
    For each macro directive (define, undefine, visibility) have a separate object that gets chained
    to the macro directive history. This has several benefits:
    
    -No need to mutate a MacroDirective when there is a undefine/visibility directive. Stuff like
     PPMutationListener become unnecessary.
    -No need to keep extra source locations for the undef/visibility locations for the define directive object
     (which is the majority of the directives)
    -Much easier to hide/unhide a section in the macro directive history.
    -Easier to track the effects of the directives across different submodules.
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178037 91177308-0d34-0410-b5e6-96231b3b80d8
    c56fff7f
    History
    [Preprocessor/Modules] Separate the macro directives kinds into their own...
    Argyrios Kyrtzidis authored
    [Preprocessor/Modules] Separate the macro directives kinds into their own MacroDirective's subclasses.
    
    For each macro directive (define, undefine, visibility) have a separate object that gets chained
    to the macro directive history. This has several benefits:
    
    -No need to mutate a MacroDirective when there is a undefine/visibility directive. Stuff like
     PPMutationListener become unnecessary.
    -No need to keep extra source locations for the undef/visibility locations for the define directive object
     (which is the majority of the directives)
    -Much easier to hide/unhide a section in the macro directive history.
    -Easier to track the effects of the directives across different submodules.
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178037 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.