• nikolaos's avatar
    This patch implements an alternative approach to the rewriting · ed665880
    nikolaos authored
    of non-pattern expressions, according to the (internally circulated)
    design document.  Details to be provided here.
    
    1.  RewritableAssignmentExpression has been renamed to RewritableExpression.
        It is a wrapper for AST nodes that wait for some potential rewriting
        (that may or may not happen).  Also, Is... and As... macros now see
        through RewritableExpressions.
    
    2.  The function state keeps a list of rewritable expressions that must be
        rewritten only if they are used as non-pattern expressions.
    
    3.  Expression classifiers are now templates, parameterized by parser
        traits.  They keep some additional state: a pointer to the list of
        non-pattern rewritable expressions.  It is important that expression
        classifiers be used strictly in a stack fashion, from now on.
    
    4.  The RewriteNonPattern function has been simplified.
    
    BUG=chromium:579913
    LOG=N
    
    Committed: https://crrev.com/7f5c864a6faf2b957b7273891e143b9bde35487c
    Cr-Commit-Position: refs/heads/master@{#34154}
    
    Review URL: https://codereview.chromium.org/1702063002
    
    Cr-Commit-Position: refs/heads/master@{#34162}
    ed665880
pattern-rewriter.cc 23.2 KB