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 // RUN: %clang --autocomplete=-fno-sanitize-coverage=,f | FileCheck %s -check-prefix=FNOSANICOVER 53 // FNOSANICOVER: func 54 // RUN: %clang --autocomplete=-fno-sanitize-coverage= | FileCheck %s -check-prefix=FNOSANICOVERALL 55 // FNOSANICOVERALL: 8bit-counters 56 // FNOSANICOVERALL-NEXT: bb 57 // FNOSANICOVERALL-NEXT: edge 58 // FNOSANICOVERALL-NEXT: func 59 // FNOSANICOVERALL-NEXT: indirect-calls 60 // FNOSANICOVERALL-NEXT: inline-8bit-counters 61 // FNOSANICOVERALL-NEXT: inline-bool-flag 62 // FNOSANICOVERALL-NEXT: no-prune 63 // FNOSANICOVERALL-NEXT: trace-bb 64 // FNOSANICOVERALL-NEXT: trace-cmp 65 // FNOSANICOVERALL-NEXT: trace-div 66 // FNOSANICOVERALL-NEXT: trace-gep 67 // FNOSANICOVERALL-NEXT: trace-pc 68 // FNOSANICOVERALL-NEXT: trace-pc-guard 69 // RUN: %clang --autocomplete=-ffp-contract= | FileCheck %s -check-prefix=FFPALL 70 // FFPALL: fast 71 // FFPALL-NEXT: fast-honor-pragmas 72 // FFPALL-NEXT: off 73 // FFPALL-NEXT: on 74 // RUN: %clang --autocomplete=-flto= | FileCheck %s -check-prefix=FLTOALL 75 // FLTOALL: full 76 // FLTOALL-NEXT: thin 77 // RUN: %clang --autocomplete=-fveclib= | FileCheck %s -check-prefix=FVECLIBALL 78 // FVECLIBALL: Accelerate 79 // FVECLIBALL-NEXT: libmvec 80 // FVECLIBALL-NEXT: MASSV 81 // FVECLIBALL-NEXT: none 82 // FVECLIBALL-NEXT: SVML 83 // RUN: %clang --autocomplete=-fshow-overloads= | FileCheck %s -check-prefix=FSOVERALL 84 // FSOVERALL: all 85 // FSOVERALL-NEXT: best 86 // RUN: %clang --autocomplete=-fvisibility= | FileCheck %s -check-prefix=FVISIBILITYALL 87 // FVISIBILITYALL: default 88 // FVISIBILITYALL-NEXT: hidden 89 // RUN: %clang --autocomplete=-mfloat-abi= | FileCheck %s -check-prefix=MFLOATABIALL 90 // MFLOATABIALL: hard 91 // MFLOATABIALL-NEXT: soft 92 // MFLOATABIALL-NEXT: softfp 93 // RUN: %clang --autocomplete=-mthread-model | FileCheck %s -check-prefix=MTHREADMODELALL 94 // MTHREADMODELALL: posix 95 // MTHREADMODELALL-NEXT: single 96 // RUN: %clang --autocomplete=-mrelocation-model | FileCheck %s -check-prefix=MRELOCMODELALL 97 // MRELOCMODELALL: dynamic-no-pic 98 // MRELOCMODELALL-NEXT: pic 99 // MRELOCMODELALL-NEXT: ropi 100 // MRELOCMODELALL-NEXT: ropi-rwpi 101 // MRELOCMODELALL-NEXT: rwpi 102 // MRELOCMODELALL-NEXT: static 103 // RUN: %clang --autocomplete=-Wma | FileCheck %s -check-prefix=WARNING 104 // WARNING: -Wmacro-redefined 105 // WARNING-NEXT: -Wmain 106 // WARNING-NEXT: -Wmain-return-type 107 // WARNING-NEXT: -Wmalformed-warning-check 108 // WARNING-NEXT: -Wmany-braces-around-scalar-init 109 // WARNING-NEXT: -Wmax-tokens 110 // WARNING-NEXT: -Wmax-unsigned-zero 111 // RUN: %clang --autocomplete=-Wno-invalid-pp- | FileCheck %s -check-prefix=NOWARNING 112 // NOWARNING: -Wno-invalid-pp-token 113 // RUN: %clang --autocomplete=-analyzer-checker | FileCheck %s -check-prefix=ANALYZER 114 // ANALYZER: unix.Malloc 115 // RUN: %clang --autocomplete=-std= | FileCheck %s -check-prefix=STDVAL 116 // STDVAL: c99 117 // 118 // Clang shouldn't autocomplete CC1 options unless -cc1 or -Xclang were provided 119 // RUN: %clang --autocomplete=-mrelocation-mode | FileCheck %s -check-prefix=MRELOCMODEL_CLANG 120 // MRELOCMODEL_CLANG-NOT: -mrelocation-model 121 // RUN: %clang --autocomplete=-Xclang,-mrelocation-mode | FileCheck %s -check-prefix=MRELOCMODEL_CC1 122 // RUN: %clang --autocomplete=-cc1,-mrelocation-mode | FileCheck %s -check-prefix=MRELOCMODEL_CC1 123 // MRELOCMODEL_CC1: -mrelocation-model 124 // Make sure it ignores passed flags unlesss they are -Xclang or -cc1 125 // RUN: %clang --autocomplete=foo,bar,,-fsyn | FileCheck %s -check-prefix=FSYN-CORON 126 // FSYN-CORON: -fsyntax-only 127 // Check if they can autocomplete values with coron 128 // RUN: %clang --autocomplete=foo,bar,,,-fno-sanitize-coverage=,f | FileCheck %s -check-prefix=FNOSANICOVER-CORON 129 // FNOSANICOVER-CORON: func 130 131 // Clang should return empty string when no value completion was found, which will fall back to file autocompletion 132 // RUN: %clang --autocomplete=-fmodule-file= | FileCheck %s -check-prefix=MODULE_FILE_EQUAL 133 // MODULE_FILE_EQUAL-NOT: -fmodule-file= 134 // RUN: %clang --autocomplete=-fmodule-file | FileCheck %s -check-prefix=MODULE_FILE 135 // MODULE_FILE: -fmodule-file= 136 137 // RUN: %clang --autocomplete=-Qunused-arguments, | FileCheck %s -check-prefix=QUNUSED_COMMA 138 // QUNUSED_COMMA-NOT: -Qunused-arguments 139 // RUN: %clang --autocomplete=-Qunused-arguments | FileCheck %s -check-prefix=QUNUSED 140 // QUNUSED: -Qunused-arguments 141