[PATCH] D117463: [clangd] Disable expand-auto action on constrained auto.

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 17 02:46:07 PST 2022

sammccall added a comment.

I'm missing some context on this patch. My intuition is that constrained auto is unlikely to be used in deducible contexts, but maybe some people will like `Iterator<int> auto I = foo.begin()` or so...

Comment at: clang-tools-extra/clangd/refactor/tweaks/ExpandAutoType.cpp:99
       if (const AutoTypeLoc Result = TypeNode->getAs<AutoTypeLoc>()) {
-        if (!isStructuredBindingType(Node) &&
+        if (!isStructuredBindingType(Node) && !Result.isConstrained() &&
             !isDeducedAsLambda(Node, Result.getBeginLoc()) &&
Why? Is there a mechanical limitation (bad typeloc or so) or is this a policy decision?

If it's technical, we should link to a bug

Comment at: clang-tools-extra/clangd/unittests/tweaks/ExpandAutoTypeTests.cpp:88
+      R"cpp(template <typename T> concept C = true;
+^C a^uto abc();
+    )cpp");
This shouldn't be unavailable because it's constrained, it should be unavailable because it's not deduced.

Does this case pass or fail today?

If the issue with constrained auto is syntactic, can you add a deductible test case?

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list