From d6f8124c9c7ee85d30b09d2ae873cf4ab4c19baa Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Thu, 17 Feb 2011 19:04:40 +0000 Subject: [PATCH] Eliminate the internal command-line option for viewing inheritance in C++ classes, since it's only really worked for the trivial cases anyway due to lame pseudo-parsing of the class name. The viewInheritance() function is still available for use in the debugger, where this is far more useful llvm-svn: 125762 --- clang/include/clang/Driver/CC1Options.td | 3 -- clang/include/clang/Frontend/ASTConsumers.h | 4 --- .../include/clang/Frontend/FrontendActions.h | 6 ---- .../include/clang/Frontend/FrontendOptions.h | 4 --- clang/lib/Frontend/ASTConsumers.cpp | 28 ------------------- clang/lib/Frontend/CompilerInvocation.cpp | 9 +----- clang/lib/Frontend/FrontendActions.cpp | 5 ---- .../ExecuteCompilerInvocation.cpp | 1 - 8 files changed, 1 insertion(+), 59 deletions(-) diff --git a/clang/include/clang/Driver/CC1Options.td b/clang/include/clang/Driver/CC1Options.td index 34399770b855..f2a66e3ce9f1 100644 --- a/clang/include/clang/Driver/CC1Options.td +++ b/clang/include/clang/Driver/CC1Options.td @@ -302,9 +302,6 @@ def help : Flag<"-help">, HelpText<"Print this help text">; def _help : Flag<"--help">, Alias; def x : Separate<"-x">, HelpText<"Input language type">; -def cxx_inheritance_view : Separate<"-cxx-inheritance-view">, - MetaVarName<"">, - HelpText<"View C++ inheritance for a specified class">; def o : Separate<"-o">, MetaVarName<"">, HelpText<"Specify output file">; def load : Separate<"-load">, MetaVarName<"">, HelpText<"Load the named plugin (dynamic shared object)">; diff --git a/clang/include/clang/Frontend/ASTConsumers.h b/clang/include/clang/Frontend/ASTConsumers.h index 6757a27ed1f1..e2071df8e32c 100644 --- a/clang/include/clang/Frontend/ASTConsumers.h +++ b/clang/include/clang/Frontend/ASTConsumers.h @@ -61,10 +61,6 @@ ASTConsumer *CreateASTViewer(); // to stderr; this is intended for debugging. ASTConsumer *CreateDeclContextPrinter(); -// Inheritance viewer: for C++ code, creates a graph of the inheritance -// tree for the given class and displays it with "dotty". -ASTConsumer *CreateInheritanceViewer(const std::string& clsname); - } // end clang namespace #endif diff --git a/clang/include/clang/Frontend/FrontendActions.h b/clang/include/clang/Frontend/FrontendActions.h index 0f2637fa51a3..4df2e71571f7 100644 --- a/clang/include/clang/Frontend/FrontendActions.h +++ b/clang/include/clang/Frontend/FrontendActions.h @@ -94,12 +94,6 @@ public: bool &Chaining); }; -class InheritanceViewAction : public ASTFrontendAction { -protected: - virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, - llvm::StringRef InFile); -}; - class SyntaxOnlyAction : public ASTFrontendAction { protected: virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, diff --git a/clang/include/clang/Frontend/FrontendOptions.h b/clang/include/clang/Frontend/FrontendOptions.h index f19914ecd78d..19d39c3ca1b2 100644 --- a/clang/include/clang/Frontend/FrontendOptions.h +++ b/clang/include/clang/Frontend/FrontendOptions.h @@ -39,7 +39,6 @@ namespace frontend { FixIt, ///< Parse and apply any fixits to the source. GeneratePCH, ///< Generate pre-compiled header. GeneratePTH, ///< Generate pre-tokenized header. - InheritanceView, ///< View C++ inheritance for a specified class. InitOnly, ///< Only execute frontend initialization. ParseSyntaxOnly, ///< Parse and perform semantic analysis. PluginAction, ///< Run a plugin action, \see ActionName. @@ -85,9 +84,6 @@ public: /// The output file, if any. std::string OutputFile; - /// If given, the name for a C++ class to view the inheritance of. - std::string ViewClassInheritance; - /// If given, the new suffix for fix-it rewritten files. std::string FixItSuffix; diff --git a/clang/lib/Frontend/ASTConsumers.cpp b/clang/lib/Frontend/ASTConsumers.cpp index e029d8d85eda..e86f99a28212 100644 --- a/clang/lib/Frontend/ASTConsumers.cpp +++ b/clang/lib/Frontend/ASTConsumers.cpp @@ -427,34 +427,6 @@ ASTConsumer *clang::CreateDeclContextPrinter() { return new DeclContextPrinter(); } -//===----------------------------------------------------------------------===// -/// InheritanceViewer - C++ Inheritance Visualization - -namespace { -class InheritanceViewer : public ASTConsumer { - const std::string clsname; -public: - InheritanceViewer(const std::string& cname) : clsname(cname) {} - - void HandleTranslationUnit(ASTContext &C) { - for (ASTContext::type_iterator I=C.types_begin(),E=C.types_end(); I!=E; ++I) - if (RecordType *T = dyn_cast(*I)) { - if (CXXRecordDecl *D = dyn_cast(T->getDecl())) { - // FIXME: This lookup needs to be generalized to handle namespaces and - // (when we support them) templates. - if (D->getNameAsString() == clsname) { - D->viewInheritance(C); - } - } - } - } -}; -} - -ASTConsumer *clang::CreateInheritanceViewer(const std::string& clsname) { - return new InheritanceViewer(clsname); -} - //===----------------------------------------------------------------------===// /// ASTDumperXML - In-depth XML dumping. diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index fa65c619a78d..4bc67317ab9d 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -335,7 +335,6 @@ static const char *getInputKindName(InputKind Kind) { static const char *getActionName(frontend::ActionKind Kind) { switch (Kind) { case frontend::PluginAction: - case frontend::InheritanceView: llvm_unreachable("Invalid kind!"); case frontend::ASTDump: return "-ast-dump"; @@ -425,18 +424,13 @@ static void FrontendOptsToArgs(const FrontendOptions &Opts, Res.push_back("-o"); Res.push_back(Opts.OutputFile); } - if (!Opts.ViewClassInheritance.empty()) { - Res.push_back("-cxx-inheritance-view"); - Res.push_back(Opts.ViewClassInheritance); - } if (!Opts.CodeCompletionAt.FileName.empty()) { Res.push_back("-code-completion-at"); Res.push_back(Opts.CodeCompletionAt.FileName + ":" + llvm::utostr(Opts.CodeCompletionAt.Line) + ":" + llvm::utostr(Opts.CodeCompletionAt.Column)); } - if (Opts.ProgramAction != frontend::InheritanceView && - Opts.ProgramAction != frontend::PluginAction) + if (Opts.ProgramAction != frontend::PluginAction) Res.push_back(getActionName(Opts.ProgramAction)); if (!Opts.ActionName.empty()) { Res.push_back("-plugin"); @@ -1170,7 +1164,6 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Opts.ShowStats = Args.hasArg(OPT_print_stats); Opts.ShowTimers = Args.hasArg(OPT_ftime_report); Opts.ShowVersion = Args.hasArg(OPT_version); - Opts.ViewClassInheritance = Args.getLastArgValue(OPT_cxx_inheritance_view); Opts.ASTMergeFiles = Args.getAllArgValues(OPT_ast_merge); Opts.LLVMArgs = Args.getAllArgValues(OPT_mllvm); Opts.FixWhatYouCan = Args.hasArg(OPT_fix_what_you_can); diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index e454321c0cce..d8e7d2904500 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -119,11 +119,6 @@ bool GeneratePCHAction::ComputeASTConsumerArguments(CompilerInstance &CI, return false; } -ASTConsumer *InheritanceViewAction::CreateASTConsumer(CompilerInstance &CI, - llvm::StringRef InFile) { - return CreateInheritanceViewer(CI.getFrontendOpts().ViewClassInheritance); -} - ASTConsumer *SyntaxOnlyAction::CreateASTConsumer(CompilerInstance &CI, llvm::StringRef InFile) { return new ASTConsumer(); diff --git a/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp b/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp index dc8b15d9c5e1..4bb85e7e6340 100644 --- a/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp +++ b/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp @@ -53,7 +53,6 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) { case FixIt: return new FixItAction(); case GeneratePCH: return new GeneratePCHAction(); case GeneratePTH: return new GeneratePTHAction(); - case InheritanceView: return new InheritanceViewAction(); case InitOnly: return new InitOnlyAction(); case ParseSyntaxOnly: return new SyntaxOnlyAction();