1 // Test for the --autocompletion flag, which is an API used for shell 2 // autocompletion. You may have to update tests in this file when you 3 // add/modify flags, change HelpTexts or the values of some flags. 4 5 // Some corner cases. 6 // Just test that this doesn't crash: 7 // RUN: %clang --autocomplete= 8 // RUN: %clang --autocomplete=, 9 // RUN: %clang --autocomplete== 10 // RUN: %clang --autocomplete=,, 11 // RUN: %clang --autocomplete=- 12 13 // RUN: %clang --autocomplete=-fsyn | FileCheck %s -check-prefix=FSYN 14 // FSYN: -fsyntax-only 15 // RUN: %clang --autocomplete=-std | FileCheck %s -check-prefix=STD 16 // STD: -std= Language standard to compile for 17 // RUN: %clang --autocomplete=foo | FileCheck %s -check-prefix=FOO 18 // FOO-NOT: foo 19 // RUN: %clang --autocomplete=-stdlib=,l | FileCheck %s -check-prefix=STDLIB 20 // STDLIB: libc++ 21 // STDLIB-NEXT: libstdc++ 22 // RUN: %clang --autocomplete=-stdlib= | FileCheck %s -check-prefix=STDLIBALL 23 // STDLIBALL: libc++ 24 // STDLIBALL-NEXT: libstdc++ 25 // STDLIBALL-NEXT: platform 26 // RUN: %clang --autocomplete=-meabi,d | FileCheck %s -check-prefix=MEABI 27 // MEABI: default 28 // RUN: %clang --autocomplete=-meabi, | FileCheck %s -check-prefix=MEABIALL 29 // RUN: %clang --autocomplete=-meabi | FileCheck %s -check-prefix=MEABIALL 30 // MEABIALL: 4 31 // MEABIALL-NEXT: 5 32 // MEABIALL-NEXT: default 33 // MEABIALL-NEXT: gnu 34 // RUN: %clang --autocomplete=-cl-std=,CL2 | FileCheck %s -check-prefix=CLSTD 35 // CLSTD: CL2.0 36 // RUN: %clang --autocomplete=-cl-std= | FileCheck %s -check-prefix=CLSTDALL 37 38 // CLSTDALL: cl 39 // CLSTDALL-NEXT: CL 40 // CLSTDALL-NEXT: cl1.0 41 // CLSTDALL-NEXT: CL1.0 42 // CLSTDALL-NEXT: cl1.1 43 // CLSTDALL-NEXT: CL1.1 44 // CLSTDALL-NEXT: cl1.2 45 // CLSTDALL-NEXT: CL1.2 46 // CLSTDALL-NEXT: cl2.0 47 // CLSTDALL-NEXT: CL2.0 48 // CLSTDALL-NEXT: cl3.0 49 // CLSTDALL-NEXT: CL3.0 50 // CLSTDALL-NEXT: clc++ 51 // CLSTDALL-NEXT: CLC++ 52 // CLSTDALL-NEXT: clc++1.0 53 // CLSTDALL-NEXT: CLC++1.0 54 // CLSTDALL-NEXT: clc++2021 55 // CLSTDALL-NEXT: CLC++2021 56 // RUN: %clang --autocomplete=-fno-sanitize-coverage=,f | FileCheck %s -check-prefix=FNOSANICOVER 57 // FNOSANICOVER: func 58 // RUN: %clang --autocomplete=-fno-sanitize-coverage= | FileCheck %s -check-prefix=FNOSANICOVERALL 59 // FNOSANICOVERALL: 8bit-counters 60 // FNOSANICOVERALL-NEXT: bb 61 // FNOSANICOVERALL-NEXT: edge 62 // FNOSANICOVERALL-NEXT: func 63 // FNOSANICOVERALL-NEXT: indirect-calls 64 // FNOSANICOVERALL-NEXT: inline-8bit-counters 65 // FNOSANICOVERALL-NEXT: inline-bool-flag 66 // FNOSANICOVERALL-NEXT: no-prune 67 // FNOSANICOVERALL-NEXT: trace-bb 68 // FNOSANICOVERALL-NEXT: trace-cmp 69 // FNOSANICOVERALL-NEXT: trace-div 70 // FNOSANICOVERALL-NEXT: trace-gep 71 // FNOSANICOVERALL-NEXT: trace-pc 72 // FNOSANICOVERALL-NEXT: trace-pc-guard 73 // RUN: %clang --autocomplete=-ffp-contract= | FileCheck %s -check-prefix=FFPALL 74 // FFPALL: fast 75 // FFPALL-NEXT: fast-honor-pragmas 76 // FFPALL-NEXT: off 77 // FFPALL-NEXT: on 78 // RUN: %clang --autocomplete=-flto= | FileCheck %s -check-prefix=FLTOALL 79 // FLTOALL: full 80 // FLTOALL-NEXT: thin 81 // RUN: %clang --autocomplete=-fveclib= | FileCheck %s -check-prefix=FVECLIBALL 82 // FVECLIBALL: Accelerate 83 // FVECLIBALL-NEXT: AMDLIBM 84 // FVECLIBALL-NEXT: ArmPL 85 // FVECLIBALL-NEXT: Darwin_libsystem_m 86 // FVECLIBALL-NEXT: libmvec 87 // FVECLIBALL-NEXT: MASSV 88 // FVECLIBALL-NEXT: none 89 // FVECLIBALL-NEXT: SLEEF 90 // FVECLIBALL-NEXT: SVML 91 // RUN: %clang --autocomplete=-fshow-overloads= | FileCheck %s -check-prefix=FSOVERALL 92 // FSOVERALL: all 93 // FSOVERALL-NEXT: best 94 // RUN: %clang --autocomplete=-fvisibility= | FileCheck %s -check-prefix=FVISIBILITYALL 95 // FVISIBILITYALL: default 96 // FVISIBILITYALL-NEXT: hidden 97 // RUN: %clang --autocomplete=-mfloat-abi= | FileCheck %s -check-prefix=MFLOATABIALL 98 // MFLOATABIALL: hard 99 // MFLOATABIALL-NEXT: soft 100 // MFLOATABIALL-NEXT: softfp 101 // RUN: %clang --autocomplete=-mthread-model | FileCheck %s -check-prefix=MTHREADMODELALL 102 // MTHREADMODELALL: posix 103 // MTHREADMODELALL-NEXT: single 104 // RUN: %clang --autocomplete=-mrelocation-model | FileCheck %s -check-prefix=MRELOCMODELALL 105 // MRELOCMODELALL: dynamic-no-pic 106 // MRELOCMODELALL-NEXT: pic 107 // MRELOCMODELALL-NEXT: ropi 108 // MRELOCMODELALL-NEXT: ropi-rwpi 109 // MRELOCMODELALL-NEXT: rwpi 110 // MRELOCMODELALL-NEXT: static 111 // RUN: %clang --autocomplete=-Wma | FileCheck %s -check-prefix=WARNING 112 // WARNING: -Wmacro-redefined 113 // WARNING-NEXT: -Wmain 114 // WARNING-NEXT: -Wmain-return-type 115 // WARNING-NEXT: -Wmalformed-warning-check 116 // WARNING-NEXT: -Wmany-braces-around-scalar-init 117 // WARNING-NEXT: -Wmath-errno-enabled-with-veclib 118 // WARNING-NEXT: -Wmathematical-notation-identifier-extension 119 // WARNING-NEXT: -Wmax-tokens 120 // WARNING-NEXT: -Wmax-unsigned-zero 121 // RUN: %clang --autocomplete=-Wno-invalid-pp- | FileCheck %s -check-prefix=NOWARNING 122 // NOWARNING: -Wno-invalid-pp-token 123 // RUN: %clang --autocomplete=-analyzer-checker | FileCheck %s -check-prefix=ANALYZER 124 // ANALYZER: unix.Malloc 125 // RUN: %clang --autocomplete=-std= | FileCheck %s -check-prefix=STDVAL 126 // STDVAL: c99 127 // 128 // Clang shouldn't autocomplete CC1 options unless -cc1 or -Xclang were provided 129 // RUN: %clang --autocomplete=-mrelocation-mode | FileCheck %s -check-prefix=MRELOCMODEL_CLANG 130 // MRELOCMODEL_CLANG-NOT: -mrelocation-model 131 // RUN: %clang --autocomplete=-Xclang,-mrelocation-mode | FileCheck %s -check-prefix=MRELOCMODEL_CC1 132 // RUN: %clang --autocomplete=-cc1,-mrelocation-mode | FileCheck %s -check-prefix=MRELOCMODEL_CC1 133 // MRELOCMODEL_CC1: -mrelocation-model 134 // Make sure it ignores passed flags unlesss they are -Xclang or -cc1 135 // RUN: %clang --autocomplete=foo,bar,,-fsyn | FileCheck %s -check-prefix=FSYN-CORON 136 // FSYN-CORON: -fsyntax-only 137 // Check if they can autocomplete values with coron 138 // RUN: %clang --autocomplete=foo,bar,,,-fno-sanitize-coverage=,f | FileCheck %s -check-prefix=FNOSANICOVER-CORON 139 // FNOSANICOVER-CORON: func 140 141 // Clang should return empty string when no value completion was found, which will fall back to file autocompletion 142 // RUN: %clang --autocomplete=-fmodule-file= | FileCheck %s -check-prefix=MODULE_FILE_EQUAL 143 // MODULE_FILE_EQUAL-NOT: -fmodule-file= 144 // RUN: %clang --autocomplete=-fmodule-file | FileCheck %s -check-prefix=MODULE_FILE 145 // MODULE_FILE: -fmodule-file= 146 147 // RUN: %clang --autocomplete=-Qunused-arguments, | FileCheck %s -check-prefix=QUNUSED_COMMA 148 // QUNUSED_COMMA-NOT: -Qunused-arguments 149 // RUN: %clang --autocomplete=-Qunused-arguments | FileCheck %s -check-prefix=QUNUSED 150 // QUNUSED: -Qunused-arguments 151