clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

Just a few changes.

- I would like the see the SBType returned for the integer template types as it 
is what I would expect to happen.
- we should add default implementations for stuff in TypeSystem and not require 
all languages to override everything. I know this isn't the way things were 
done in the past, but we should fix that to avoid bloat in all TypeSystem 
subclasses.



================
Comment at: include/lldb/Symbol/GoASTContext.h:318-334
+  lldb::TemplateArgumentKind
+  GetTemplateArgumentKind(lldb::opaque_compiler_type_t type,
+                          size_t idx) override {
+    return lldb::eTemplateArgumentKindNull;
+  }
+
+  CompilerType GetTypeTemplateArgument(lldb::opaque_compiler_type_t type,
----------------
I know this isn't how things were done up to now, but we really should move 
these default implementations in the original class and not require everyone to 
override with a version that does nothing. Can we not make these pure virtual 
in the original class?


================
Comment at: include/lldb/Symbol/JavaASTContext.h:206-220
+  lldb::TemplateArgumentKind
+  GetTemplateArgumentKind(lldb::opaque_compiler_type_t type,
+                          size_t idx) override {
+    return lldb::eTemplateArgumentKindNull;
+  }
+
+  CompilerType GetTypeTemplateArgument(lldb::opaque_compiler_type_t type,
----------------
I know this isn't how things were done up to now, but we really should move 
these default implementations in the original class and not require everyone to 
override with a version that does nothing. Can we not make these pure virtual 
in the original class?


================
Comment at: include/lldb/Symbol/OCamlASTContext.h:234-248
+  lldb::TemplateArgumentKind
+  GetTemplateArgumentKind(lldb::opaque_compiler_type_t type,
+                          size_t idx) override {
+    return lldb::eTemplateArgumentKindNull;
+  }
+
+  CompilerType GetTypeTemplateArgument(lldb::opaque_compiler_type_t type,
----------------
I know this isn't how things were done up to now, but we really should move 
these default implementations in the original class and not require everyone to 
override with a version that does nothing. Can we not make these pure virtual 
in the original class?


================
Comment at: include/lldb/Symbol/TypeSystem.h:354-360
+  virtual lldb::TemplateArgumentKind
+  GetTemplateArgumentKind(lldb::opaque_compiler_type_t type, size_t idx) = 0;
+  virtual CompilerType GetTypeTemplateArgument(lldb::opaque_compiler_type_t 
type,
+                                           size_t idx) = 0;
+  virtual std::pair<llvm::APSInt, CompilerType>
+  GetIntegralTemplateArgument(lldb::opaque_compiler_type_t type,
+                              size_t idx) = 0;
----------------
Put default implementations here, and don't modify the Go, Java and OCaml ASTs?


================
Comment at: source/API/SBType.cpp:422
+  CompilerType template_arg_type =
+      m_opaque_sp->GetCompilerType(false).GetTypeTemplateArgument(idx);
+  if (template_arg_type.IsValid())
----------------
labath wrote:
> I should point out that this changes the behaviour of 
> `SBType::GetTemplateArgumentType` slightly.
> 
> Previously, for an integral template argument (e.g. `foo<47>`), it returned 
> the *type* of the integer argument (i.e. `int`), where as now it will return 
> nothing.
> 
> I think this is the behavior that makes most sense for the underlying API, 
> but if you're worried about compatibility, I can add a special case here (I 
> am not worried as I don't think there is anything reasonable the user could 
> have done with the returned value anyway).
I would like this to return the type here as I believe that makes the most 
sense. Why would we not return the correct type of the template argument for 
integers?


https://reviews.llvm.org/D39844



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to