Skip to content
  • Sean Callanan's avatar
    Added support for persistent types to the · bccce813
    Sean Callanan authored
    expression parser.  You can use a persistent
    type like this:
    
    (lldb) expr struct $foo { int a; int b; };
    (lldb) struct $foo i; i.a = 2; i.b = 3; i
    ($foo) $0 = {
      (int) a = 2
      (int) b = 3
    }
    
    typedefs work similarly.
    
    This patch affects the following files:
    
    test/expression_command/persistent_types/*
      A test case for persistent types,
      in particular structs and typedefs.
    
    ClangForward.h
      Added TypeDecl, needed to declare some
      functions in ASTResultSynthesizer.h
    
    ClangPersistentVariables.[h,cpp]
      Added a list of persistent types to the
      persistent variable store.
    
    ASTResultSynthesizer.[h,cpp]
      Made the AST result synthesizer iterate
      across TypeDecls in the expression, and
      record any persistent types found.  Also
      made a minor documentation fix.
    
    ClangUserExpression.[h,cpp]
      Extended the user expression class to
      keep the state needed to report the
      persistent variable store for the target
      to the AST result synthesizers. 
    
      Also introduced a new error code for
      expressions that executed normally but
      did not return a result.
    
    CommandObjectExpression.cpp
      Improved output for expressions (like 
      declarations of new persistent types) that
      don't return a result.  This is no longer
      treated as an error.
    
    llvm-svn: 138383
    bccce813
Loading