-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Dump
functions to Check, Parse, and Lex
#4669
Changes from 1 commit
b5d253a
9cc9ac4
e28d533
30bb063
19fddbc
08907b1
1526f1d
bdc9c01
b0b1cdf
91bc8a0
506a504
fb7840f
228273f
a8da68b
3ed5149
2bec55b
d5a2374
1964585
4fa1b64
c9d28da
3365c6c
baa3dda
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,7 +20,6 @@ cc_library( | |
"convert.cpp", | ||
"decl_name_stack.cpp", | ||
"deduce.cpp", | ||
"dump_id.cpp", | ||
"eval.cpp", | ||
"function.cpp", | ||
"generic.cpp", | ||
|
@@ -47,7 +46,6 @@ cc_library( | |
"decl_name_stack.h", | ||
"deduce.h", | ||
"diagnostic_helpers.h", | ||
"dump_id.h", | ||
"eval.h", | ||
"function.h", | ||
"generic.h", | ||
|
@@ -93,6 +91,24 @@ cc_library( | |
"//toolchain/sem_ir:typed_insts", | ||
"@llvm-project//llvm:Support", | ||
], | ||
alwayslink = 1, | ||
) | ||
|
||
cc_library( | ||
name = "dump_id", | ||
srcs = ["dump_id.cpp"], | ||
copts = ["-Wno-missing-prototypes"], | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leave a comment why this is here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
deps = [ | ||
":context", | ||
"//common:check", | ||
"//common:ostream", | ||
"//toolchain/lex:dump_id", | ||
"//toolchain/lex:tokenized_buffer", | ||
"//toolchain/parse:dump_id", | ||
"//toolchain/parse:tree", | ||
"//toolchain/sem_ir:file", | ||
], | ||
alwayslink = 1, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leave a comment why this is here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
) | ||
|
||
cc_library( | ||
|
@@ -112,6 +128,7 @@ cc_library( | |
hdrs = ["check.h"], | ||
deps = [ | ||
":context", | ||
":dump_id", | ||
":impl", | ||
":interface", | ||
":pointer_dereference", | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,20 +2,21 @@ | |
// Exceptions. See /LICENSE for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
|
||
#include "toolchain/check/dump_id.h" | ||
#ifndef NDEBUG | ||
|
||
#include "toolchain/lex/dump_id.h" | ||
|
||
#include "common/check.h" | ||
#include "common/ostream.h" | ||
#include "toolchain/check/context.h" | ||
#include "toolchain/lex/dump_id.h" | ||
#include "toolchain/lex/tokenized_buffer.h" | ||
#include "toolchain/parse/dump_id.h" | ||
#include "toolchain/parse/tree.h" | ||
#include "toolchain/sem_ir/file.h" | ||
|
||
namespace Carbon::Check { | ||
|
||
auto DumpIdImpl(const Context& context, SemIR::LocId loc_id) -> void { | ||
static auto DumpIdImpl(const Context& context, SemIR::LocId loc_id) -> void { | ||
if (!loc_id.is_valid()) { | ||
llvm::errs() << "LocId(invalid)"; | ||
return; | ||
|
@@ -44,4 +45,22 @@ auto DumpIdImpl(const Context& context, SemIR::LocId loc_id) -> void { | |
} | ||
} | ||
|
||
// A set of DumpId() overloads that dump an object to stderr, useful for | ||
// calling inside a debugger. | ||
LLVM_DUMP_METHOD auto DumpId(const Context& context, Lex::TokenIndex token) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The PR description says "this provides Check::Dump(context, arg) and similar" which is a typo (no Id) that we keep making. And we'll want to dump things other than Ids (like PendingBlock). So maybe we should drop the Id suffix. This is also fine for now, but I'm not happy with the naming forever yet. I was also talking with Geoff about maybe renaming "Dump" in Printable (Dump->Print and Print->PrintTo?) or something to avoid the name collisions. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. LLVM typically calls it https://github.com/search?q=repo%3Allvm%2Fllvm-project%20LLVM_DUMP_METHOD&type=code (ed: to be clear, I think there's significant value in consistency) You're correct the PR description doesn't match, I'll change the call though. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Note, removing There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right yeah I don't want to diverge from LLVM too much either. My full opinion state here is that I'd prefer Dump to be used for the place that includes as much info as possible. The dump() in LLVM does include comprehensive amount of info generally everything you need when debugging, similarly. I'd personally be fine with renaming or removing the Dump function from Printable. I haven't had a lot of use of calling Dump explicitly on Printable types, as they are already streamable. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (to be sure, I'm assuming this'll be resolved separately) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes, me too |
||
-> void { | ||
Lex::DumpId(context.tokens(), token); | ||
} | ||
LLVM_DUMP_METHOD auto DumpId(const Context& context, Parse::NodeId node_id) | ||
-> void { | ||
Parse::DumpId(context.parse_tree(), node_id); | ||
} | ||
LLVM_DUMP_METHOD auto DumpId(const Context& context, SemIR::LocId loc_id) | ||
-> void { | ||
DumpIdImpl(context, loc_id); | ||
llvm::errs() << '\n'; | ||
} | ||
|
||
} // namespace Carbon::Check | ||
|
||
#endif // NDEBUG |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -184,6 +184,7 @@ cc_library( | |
hdrs = ["lex.h"], | ||
deps = [ | ||
":character_set", | ||
":dump_id", | ||
":helpers", | ||
":numeric_literal", | ||
":string_literal", | ||
|
@@ -198,6 +199,17 @@ cc_library( | |
], | ||
) | ||
|
||
cc_library( | ||
name = "dump_id", | ||
srcs = ["dump_id.cpp"], | ||
hdrs = ["dump_id.h"], | ||
deps = [ | ||
":tokenized_buffer", | ||
"//common:ostream", | ||
], | ||
alwayslink = 1, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leave a comment why this is here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
) | ||
|
||
cc_library( | ||
name = "token_index", | ||
hdrs = ["token_index.h"], | ||
|
@@ -209,14 +221,8 @@ cc_library( | |
|
||
cc_library( | ||
name = "tokenized_buffer", | ||
srcs = [ | ||
"dump_id.cpp", | ||
"tokenized_buffer.cpp", | ||
], | ||
hdrs = [ | ||
"dump_id.h", | ||
"tokenized_buffer.h", | ||
], | ||
srcs = ["tokenized_buffer.cpp"], | ||
hdrs = ["tokenized_buffer.h"], | ||
deps = [ | ||
":character_set", | ||
":helpers", | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -88,6 +88,7 @@ cc_library( | |
], | ||
deps = [ | ||
":context", | ||
":dump_id", | ||
":node_kind", | ||
":state", | ||
":tree", | ||
|
@@ -102,6 +103,18 @@ cc_library( | |
], | ||
) | ||
|
||
cc_library( | ||
name = "dump_id", | ||
srcs = ["dump_id.cpp"], | ||
hdrs = ["dump_id.h"], | ||
deps = [ | ||
":tree", | ||
"//common:ostream", | ||
"//toolchain/lex:dump_id", | ||
], | ||
alwayslink = 1, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Comment why this is here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done |
||
) | ||
|
||
cc_library( | ||
name = "state", | ||
srcs = ["state.cpp"], | ||
|
@@ -113,13 +126,11 @@ cc_library( | |
cc_library( | ||
name = "tree", | ||
srcs = [ | ||
"dump_id.cpp", | ||
"extract.cpp", | ||
"tree.cpp", | ||
"tree_and_subtrees.cpp", | ||
], | ||
hdrs = [ | ||
"dump_id.h", | ||
"tree.h", | ||
"tree_and_subtrees.h", | ||
], | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,11 +2,12 @@ | |
// Exceptions. See /LICENSE for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
|
||
#ifndef NDEBUG | ||
|
||
#include "toolchain/parse/dump_id.h" | ||
|
||
#include "common/ostream.h" | ||
#include "toolchain/lex/dump_id.h" | ||
#include "toolchain/parse/tree.h" | ||
|
||
namespace Carbon::Parse { | ||
|
||
|
@@ -26,4 +27,19 @@ auto DumpIdImpl(const Tree& tree, NodeId node_id) -> void { | |
llvm::errs() << ")"; | ||
} | ||
|
||
// A set of DumpId() overloads that dump an object to stderr, useful for | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In Lex, this is moved to the header, should this comment move to the header here too? Or can we make it consistent either way There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added a more complete comment to each header. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also a mention in docs/ |
||
// calling inside a debugger. | ||
LLVM_DUMP_METHOD auto DumpId(const Parse::Tree& tree, Lex::TokenIndex token) | ||
-> void { | ||
Lex::DumpId(tree.tokens(), token); | ||
} | ||
|
||
LLVM_DUMP_METHOD auto DumpId(const Parse::Tree& tree, Parse::NodeId node_id) | ||
-> void { | ||
DumpIdImpl(tree, node_id); | ||
llvm::errs() << '\n'; | ||
} | ||
|
||
} // namespace Carbon::Parse | ||
|
||
#endif // NDEBUG |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leave a comment why this is here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like this one was missed, I also wondered if it's actually needed since dump was moved to another cc_library.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops, I wasn't looking closely enough because I just assumed I'd already removed this set. Removed.