sammccall added inline comments.

================
Comment at: clang-tools-extra/clangd/ConfigFragment.h:243
+    /// - Strict
+    std::optional<Located<std::string>> Mode;
+
----------------
kadircet wrote:
> sammccall wrote:
> > I think "Diagnostics.Mode" is too vague a name.
> > 
> > I expect this to be a rollout flag that we remove in the medium term 
> > (either deciding to stick to the old or new behavior), so maybe something 
> > ultra-specific like`AllowStalePreamble: yes/no`?
> > (Preamble is jargon, maybe there's something better, but again I don't 
> > think we should plan for this to be really "user-visible")
> i actually feel like there's some value in keeping this around. some users 
> value correctness of their diagnostics too much, and option isn't really 
> costly to implement. why do you think we should stick to one or the other?
> some users value correctness of their diagnostics too much

First, citation needed! (People *claiming* that they value correctness when 
they actually prefer latency seems common based on our past optimizations).

Second, this is a fine-grained knob that probably doesn't yield a useful 
correctness/latency tradeoff. If it trades off a lot of correctness, we 
probably want to leave it off by default and at that point we should delete the 
feature. If it trades off only a little correctness, then most people will want 
it and *disabling it won't significantly improve diagnostics correctness* as 
most errors come from non-configurable tradeoffs made elsewhere.

There's a sweet spot where this trades off just the critical amount of 
correctness to make it a difficult call, I just think it's unlikely we'll hit 
that. (I'm optimistic about this being mostly unnoticeable).

---

Regardless, if this is a long-lived option, it's **more** important to have a 
good name. `AllowStalePreamble` seems clearly better than `Mode` but maybe we 
could come up with something better - I just don't think it matters that much 
if the option is short-lived.


================
Comment at: clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp:555
+  EXPECT_TRUE(compileAndApply());
+  // Defaults to Strict.
+  EXPECT_EQ(Conf.Diagnostics.Mode, Config::DiagnosticsMode::Fast);
----------------
comment doesn't seem to apply here (and below)


================
Comment at: clang-tools-extra/clangd/unittests/PreambleTests.cpp:584
+
+std::vector<clangd::Range> mainFileDiagRanges(const ParsedAST &AST) {
+  std::vector<clangd::Range> Result;
----------------
hmm, this convert-then-assert-eq is harder to debug when there are unexpected 
diagnostics than matchers, I think. Might be better to follow what 
DiagnosticTests does here?


================
Comment at: clang-tools-extra/clangd/unittests/PreambleTests.cpp:628
+  AdditionalFiles["bar.h"] = "#pragma once";
+  llvm::StringLiteral BaselinePreamble("#define FOO 1\n[[#include 
\"foo.h\"]]");
+  {
----------------
nit: embedded newlines are hard to read and inconsistent with other tests. 
rawstrings?


================
Comment at: clang-tools-extra/clangd/unittests/PreambleTests.cpp:634
+                                NewCode.code(), AdditionalFiles);
+    // FIXME: Should be pointing at the range inside the Newcode.
+    EXPECT_THAT(mainFileDiagRanges(*AST), IsEmpty());
----------------
it's unclear what the behavior is here: do we get a diagnostic with no range, 
or a bad range that's being filtered out, or no diagnostic at all?

(The presence/absence of the diagnostics is important to test, independent of 
the locations)


================
Comment at: clang-tools-extra/clangd/unittests/PreambleTests.cpp:642
+    auto AST = createPatchedAST(Code.code(), NewCode.code(), AdditionalFiles);
+    // FIXME: This is just all sorts of wrong. We point at the FOO from 
baseline
+    // claiming it's redefined and not point at the new include of "bar.h".
----------------
assert the behavior instead of describing it in a comment?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142890/new/

https://reviews.llvm.org/D142890

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

Reply via email to