Re: r309113 - [Bash-autocompletion] Show HelpText with possible flags

2017-07-28 Thread Hans Wennborg via cfe-commits
Merged to 5.0 in r309438.

On Wed, Jul 26, 2017 at 6:36 AM, Yuka Takahashi via cfe-commits
 wrote:
> Author: yamaguchi
> Date: Wed Jul 26 06:36:58 2017
> New Revision: 309113
>
> URL: http://llvm.org/viewvc/llvm-project?rev=309113=rev
> Log:
> [Bash-autocompletion] Show HelpText with possible flags
>
> Summary:
> `clang --autocomplete=-std` will show
> ```
> -std:   Language standard to compile for
> -std=   Language standard to compile for
> -stdlib=C++ standard library to use
> ```
> after this change.
>
> However, showing HelpText with completion in bash seems super tricky, so
> this feature will be used in other shells (fish, zsh...).
>
> Reviewers: v.g.vassilev, teemperor, ruiu
>
> Subscribers: cfe-commits, hiraditya
>
> Differential Revision: https://reviews.llvm.org/D35759
>
> Modified:
> cfe/trunk/lib/Driver/Driver.cpp
> cfe/trunk/test/Driver/autocomplete.c
> cfe/trunk/utils/bash-autocomplete.sh
>
> Modified: cfe/trunk/lib/Driver/Driver.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=309113=309112=309113=diff
> ==
> --- cfe/trunk/lib/Driver/Driver.cpp (original)
> +++ cfe/trunk/lib/Driver/Driver.cpp Wed Jul 26 06:36:58 2017
> @@ -1297,7 +1297,7 @@ bool Driver::HandleImmediateArgs(const C
>  std::sort(SuggestedCompletions.begin(), SuggestedCompletions.end(),
>[](StringRef A, StringRef B) { return A.compare_lower(B) < 0; 
> });
>
> -llvm::outs() << llvm::join(SuggestedCompletions, " ") << '\n';
> +llvm::outs() << llvm::join(SuggestedCompletions, "\n") << '\n';
>  return false;
>}
>
>
> Modified: cfe/trunk/test/Driver/autocomplete.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/autocomplete.c?rev=309113=309112=309113=diff
> ==
> --- cfe/trunk/test/Driver/autocomplete.c (original)
> +++ cfe/trunk/test/Driver/autocomplete.c Wed Jul 26 06:36:58 2017
> @@ -1,46 +1,91 @@
>  // RUN: %clang --autocomplete=-fsyn | FileCheck %s -check-prefix=FSYN
>  // FSYN: -fsyntax-only
> -// RUN: %clang --autocomplete=-s | FileCheck %s -check-prefix=STD
> -// STD: -std={{.*}}-stdlib=
> +// RUN: %clang --autocomplete=-std= | FileCheck %s -check-prefix=STD
> +// STD: -std= Language standard to compile for
>  // RUN: %clang --autocomplete=foo | FileCheck %s -check-prefix=FOO
>  // FOO-NOT: foo
>  // RUN: %clang --autocomplete=-stdlib=,l | FileCheck %s -check-prefix=STDLIB
> -// STDLIB: libc++ libstdc++
> +// STDLIB: libc++
> +// STDLIB-NEXT: libstdc++
>  // RUN: %clang --autocomplete=-stdlib=, | FileCheck %s 
> -check-prefix=STDLIBALL
> -// STDLIBALL: libc++ libstdc++ platform
> +// STDLIBALL: libc++
> +// STDLIBALL-NEXT: libstdc++
> +// STDLIBALL-NEXT: platform
>  // RUN: %clang --autocomplete=-meabi,d | FileCheck %s -check-prefix=MEABI
>  // MEABI: default
>  // RUN: %clang --autocomplete=-meabi, | FileCheck %s -check-prefix=MEABIALL
> -// MEABIALL: 4 5 default gnu
> +// MEABIALL: 4
> +// MEABIALL-NEXT: 5
> +// MEABIALL-NEXT: default
> +// MEABIALL-NEXT: gnu
>  // RUN: %clang --autocomplete=-cl-std=,CL2 | FileCheck %s -check-prefix=CLSTD
>  // CLSTD: CL2.0
>  // RUN: %clang --autocomplete=-cl-std=, | FileCheck %s -check-prefix=CLSTDALL
> -// CLSTDALL: cl CL cl1.1 CL1.1 cl1.2 CL1.2 cl2.0 CL2.0
> +// CLSTDALL: cl
> +// CLSTDALL-NEXT: CL
> +// CLSTDALL-NEXT: cl1.1
> +// CLSTDALL-NEXT: CL1.1
> +// CLSTDALL-NEXT: cl1.2
> +// CLSTDALL-NEXT: CL1.2
> +// CLSTDALL-NEXT: cl2.0
> +// CLSTDALL-NEXT: CL2.0
>  // RUN: %clang --autocomplete=-fno-sanitize-coverage=,f | FileCheck %s 
> -check-prefix=FNOSANICOVER
>  // FNOSANICOVER: func
>  // RUN: %clang --autocomplete=-fno-sanitize-coverage=, | FileCheck %s 
> -check-prefix=FNOSANICOVERALL
> -// FNOSANICOVERALL: 8bit-counters bb edge func indirect-calls 
> inline-8bit-counters no-prune trace-bb trace-cmp trace-div trace-gep trace-pc 
> trace-pc-guard
> +// FNOSANICOVERALL: 8bit-counters
> +// FNOSANICOVERALL-NEXT: bb
> +// FNOSANICOVERALL-NEXT: edge
> +// FNOSANICOVERALL-NEXT: func
> +// FNOSANICOVERALL-NEXT: indirect-calls
> +// FNOSANICOVERALL-NEXT: inline-8bit-counters
> +// FNOSANICOVERALL-NEXT: no-prune
> +// FNOSANICOVERALL-NEXT: trace-bb
> +// FNOSANICOVERALL-NEXT: trace-cmp
> +// FNOSANICOVERALL-NEXT: trace-div
> +// FNOSANICOVERALL-NEXT: trace-gep
> +// FNOSANICOVERALL-NEXT: trace-pc
> +// FNOSANICOVERALL-NEXT: trace-pc-guard
>  // RUN: %clang --autocomplete=-ffp-contract=, | FileCheck %s 
> -check-prefix=FFPALL
> -// FFPALL: fast off on
> +// FFPALL: fast
> +// FFPALL-NEXT: off
> +// FFPALL-NEXT: on
>  // RUN: %clang --autocomplete=-flto=, | FileCheck %s -check-prefix=FLTOALL
> -// FLTOALL: full thin
> +// FLTOALL: full
> +// FLTOALL-NEXT: thin
>  // RUN: %clang --autocomplete=-fveclib=, | FileCheck %s 
> -check-prefix=FVECLIBALL
> -// FVECLIBALL: Accelerate none SVML
> +// FVECLIBALL: 

r309113 - [Bash-autocompletion] Show HelpText with possible flags

2017-07-26 Thread Yuka Takahashi via cfe-commits
Author: yamaguchi
Date: Wed Jul 26 06:36:58 2017
New Revision: 309113

URL: http://llvm.org/viewvc/llvm-project?rev=309113=rev
Log:
[Bash-autocompletion] Show HelpText with possible flags

Summary:
`clang --autocomplete=-std` will show
```
-std:   Language standard to compile for
-std=   Language standard to compile for
-stdlib=C++ standard library to use
```
after this change.

However, showing HelpText with completion in bash seems super tricky, so
this feature will be used in other shells (fish, zsh...).

Reviewers: v.g.vassilev, teemperor, ruiu

Subscribers: cfe-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D35759

Modified:
cfe/trunk/lib/Driver/Driver.cpp
cfe/trunk/test/Driver/autocomplete.c
cfe/trunk/utils/bash-autocomplete.sh

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=309113=309112=309113=diff
==
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Wed Jul 26 06:36:58 2017
@@ -1297,7 +1297,7 @@ bool Driver::HandleImmediateArgs(const C
 std::sort(SuggestedCompletions.begin(), SuggestedCompletions.end(),
   [](StringRef A, StringRef B) { return A.compare_lower(B) < 0; });
 
-llvm::outs() << llvm::join(SuggestedCompletions, " ") << '\n';
+llvm::outs() << llvm::join(SuggestedCompletions, "\n") << '\n';
 return false;
   }
 

Modified: cfe/trunk/test/Driver/autocomplete.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/autocomplete.c?rev=309113=309112=309113=diff
==
--- cfe/trunk/test/Driver/autocomplete.c (original)
+++ cfe/trunk/test/Driver/autocomplete.c Wed Jul 26 06:36:58 2017
@@ -1,46 +1,91 @@
 // RUN: %clang --autocomplete=-fsyn | FileCheck %s -check-prefix=FSYN
 // FSYN: -fsyntax-only
-// RUN: %clang --autocomplete=-s | FileCheck %s -check-prefix=STD
-// STD: -std={{.*}}-stdlib=
+// RUN: %clang --autocomplete=-std= | FileCheck %s -check-prefix=STD
+// STD: -std= Language standard to compile for
 // RUN: %clang --autocomplete=foo | FileCheck %s -check-prefix=FOO
 // FOO-NOT: foo
 // RUN: %clang --autocomplete=-stdlib=,l | FileCheck %s -check-prefix=STDLIB
-// STDLIB: libc++ libstdc++
+// STDLIB: libc++
+// STDLIB-NEXT: libstdc++
 // RUN: %clang --autocomplete=-stdlib=, | FileCheck %s -check-prefix=STDLIBALL
-// STDLIBALL: libc++ libstdc++ platform
+// STDLIBALL: libc++
+// STDLIBALL-NEXT: libstdc++
+// STDLIBALL-NEXT: platform
 // RUN: %clang --autocomplete=-meabi,d | FileCheck %s -check-prefix=MEABI
 // MEABI: default
 // RUN: %clang --autocomplete=-meabi, | FileCheck %s -check-prefix=MEABIALL
-// MEABIALL: 4 5 default gnu
+// MEABIALL: 4
+// MEABIALL-NEXT: 5
+// MEABIALL-NEXT: default
+// MEABIALL-NEXT: gnu
 // RUN: %clang --autocomplete=-cl-std=,CL2 | FileCheck %s -check-prefix=CLSTD
 // CLSTD: CL2.0
 // RUN: %clang --autocomplete=-cl-std=, | FileCheck %s -check-prefix=CLSTDALL
-// CLSTDALL: cl CL cl1.1 CL1.1 cl1.2 CL1.2 cl2.0 CL2.0
+// CLSTDALL: cl
+// CLSTDALL-NEXT: CL
+// CLSTDALL-NEXT: cl1.1
+// CLSTDALL-NEXT: CL1.1
+// CLSTDALL-NEXT: cl1.2
+// CLSTDALL-NEXT: CL1.2
+// CLSTDALL-NEXT: cl2.0
+// CLSTDALL-NEXT: CL2.0
 // RUN: %clang --autocomplete=-fno-sanitize-coverage=,f | FileCheck %s 
-check-prefix=FNOSANICOVER
 // FNOSANICOVER: func
 // RUN: %clang --autocomplete=-fno-sanitize-coverage=, | FileCheck %s 
-check-prefix=FNOSANICOVERALL
-// FNOSANICOVERALL: 8bit-counters bb edge func indirect-calls 
inline-8bit-counters no-prune trace-bb trace-cmp trace-div trace-gep trace-pc 
trace-pc-guard
+// FNOSANICOVERALL: 8bit-counters
+// FNOSANICOVERALL-NEXT: bb
+// FNOSANICOVERALL-NEXT: edge
+// FNOSANICOVERALL-NEXT: func
+// FNOSANICOVERALL-NEXT: indirect-calls
+// FNOSANICOVERALL-NEXT: inline-8bit-counters
+// FNOSANICOVERALL-NEXT: no-prune
+// FNOSANICOVERALL-NEXT: trace-bb
+// FNOSANICOVERALL-NEXT: trace-cmp
+// FNOSANICOVERALL-NEXT: trace-div
+// FNOSANICOVERALL-NEXT: trace-gep
+// FNOSANICOVERALL-NEXT: trace-pc
+// FNOSANICOVERALL-NEXT: trace-pc-guard
 // RUN: %clang --autocomplete=-ffp-contract=, | FileCheck %s 
-check-prefix=FFPALL
-// FFPALL: fast off on
+// FFPALL: fast
+// FFPALL-NEXT: off
+// FFPALL-NEXT: on
 // RUN: %clang --autocomplete=-flto=, | FileCheck %s -check-prefix=FLTOALL
-// FLTOALL: full thin
+// FLTOALL: full
+// FLTOALL-NEXT: thin
 // RUN: %clang --autocomplete=-fveclib=, | FileCheck %s 
-check-prefix=FVECLIBALL
-// FVECLIBALL: Accelerate none SVML
+// FVECLIBALL: Accelerate
+// FVECLIBALL-NEXT: none
+// FVECLIBALL-NEXT: SVML
 // RUN: %clang --autocomplete=-fshow-overloads=, | FileCheck %s 
-check-prefix=FSOVERALL
-// FSOVERALL: all best
+// FSOVERALL: all
+// FSOVERALL-NEXT: best
 // RUN: %clang --autocomplete=-fvisibility=, | FileCheck %s 
-check-prefix=FVISIBILITYALL
-// FVISIBILITYALL: default hidden
+// FVISIBILITYALL: default