brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · f733995 Raw
315 lines · cpp
1// RUN: %clang_cc1 -x c -fsyntax-only -verify %s2// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify -Wall -Wno-unused -Wno-misleading-indentation -DCXX17 %s3// RUN: %clang_cc1 -x c -fsyntax-only -verify -Wmisleading-indentation -DWITH_WARN -ftabstop 8 -DTAB_SIZE=8 %s4// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify -Wall -Wno-unused -DWITH_WARN  -ftabstop 4 -DTAB_SIZE=4 -DCXX17 %s5// RUN: %clang_cc1 -x c -fsyntax-only -verify -Wall -Wno-unused -DWITH_WARN -ftabstop 1 -DTAB_SIZE=1 %s6// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify -Wall -Wno-unused -Wmisleading-indentation -DCXX17 -DWITH_WARN -ftabstop 2 -DTAB_SIZE=2 %s7 8#ifndef WITH_WARN9// expected-no-diagnostics10#endif11 12void f0(int i) {13  if (i)14#ifdef WITH_WARN15// expected-note@-2 {{here}}16#endif17    i = i + 1;18    int x = 0;19#ifdef WITH_WARN20// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}21#endif22  return;23#ifdef CXX1724  if constexpr (false)25#ifdef WITH_WARN26// expected-note@-2 {{here}}27#endif28    i = 0;29    i += 1;30#ifdef WITH_WARN31// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}32#endif33#endif34}35 36void f1(int i) {37  for (;i;)38#ifdef WITH_WARN39// expected-note@-2 {{here}}40#endif41    i = i + 1;42    i *= 2;43#ifdef WITH_WARN44// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'for'}}45#endif46  return;47}48 49void f2(int i) {50  while (i)51#ifdef WITH_WARN52// expected-note@-2 {{here}}53#endif54    i = i + 1; i *= 2;55#ifdef WITH_WARN56// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'while'}}57#endif58  return;59}60 61void f3(int i) {62  if (i)63    i = i + 1;64  else65#ifdef WITH_WARN66// expected-note@-2 {{here}}67#endif68    i *= 2;69    const int x = 0;70#ifdef WITH_WARN71// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'else'}}72#endif73}74 75#ifdef CXX1776struct Range {77  int *begin() {return nullptr;}78  int *end() {return nullptr;}79};80#endif81 82void f4(int i) {83  if (i)84  i *= 2;85  return;86  if (i)87    i *= 2;88    ;89  if (i)90#ifdef WITH_WARN91// expected-note@-2 {{here}}92#endif93    i *= 2;94    typedef int Int;95#ifdef WITH_WARN96// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}97#endif98#ifdef CXX1799  Range R;100  for (auto e : R)101#ifdef WITH_WARN102// expected-note@-2 {{here}}103#endif104    i *= 2;105    using Int2 = int;106#ifdef WITH_WARN107// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'for'}}108#endif109#endif110}111 112int bar(void);113 114int foo(int* dst)115{   116    if (dst)117       return118    bar();119  if (dst)120    dst = dst + \121    bar();122  return 0;123}124 125void g(int i) {126  if (1)127    i = 2;128  else129         if (i == 3)130#ifdef WITH_WARN131// expected-note@-3 {{here}}132#endif133    i = 4;134    i = 5;135#ifdef WITH_WARN136// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}137#endif138}139 140// Or this141#define TEST i = 5142void g0(int i) {143  if (1)144    i = 2;145  else146    i = 5;147    TEST;148}149 150void g1(int i) {151  if (1)152    i = 2;153  else if (i == 3)154#ifdef WITH_WARN155// expected-note@-2 {{here}}156#endif157      i = 4;158      i = 5;159#ifdef WITH_WARN160// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}161#endif162}163 164void g2(int i) {165  if (1)166    i = 2;167  else168    if (i == 3)169    {i = 4;}170    i = 5;171}172 173void g6(int i) {174        if (1)175                if (i == 3)176#ifdef WITH_WARN177// expected-note@-2 {{here}}178#endif179                        i = 4;180                        i = 5;181#ifdef WITH_WARN182// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}183#endif184}185 186void g7(int i) {187  if (1)188    i = 4;189#ifdef TEST1190#endif191    i = 5;192}193 194void a1(int i) { if (1) i = 4; return; }195 196void a2(int i) {197  {198    if (1)199      i = 4;200      }201  return;202}203 204void a3(int i) {205  if (1)206    {207    i = 4;208    }209    return;210}211 212void s(int num) {213    {214        if (1)215            return;216        else217            return;218        return;219    }220    if (0)221#ifdef WITH_WARN222// expected-note@-2 {{here}}223#endif224        return;225        return;226#ifdef WITH_WARN227// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}228#endif229}230int a4(void)231{232	if (0)233		return 1;234 	return 0;235#if (TAB_SIZE == 1)236// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}237// expected-note@-5 {{here}}238#endif 239}240 241int a5(void)242{243	if (0)244		return 1;245		return 0;246#if WITH_WARN247// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}248// expected-note@-5 {{here}}249#endif250}251 252int a6(void)253{254	if (0)255		return 1;256      		return 0;257#if (TAB_SIZE == 8)258// expected-warning@-2 {{misleading indentation; statement is not part of the previous 'if'}}259// expected-note@-5 {{here}}260#endif261}262 263#define FOO \264 goto fail265 266int main(int argc, char* argv[]) {267  if (5 != 0)268    goto fail;269  else270    goto fail;271 272  if (1) {273    if (1)274      goto fail;275    else if (1)276      goto fail;277    else if (1)278      goto fail;279    else280      goto fail;281  } else if (1) {282    if (1)283      goto fail;284  }285 286  if (1) {287    if (1)288      goto fail;289  } else if (1)290    goto fail;291 292 293  if (1) goto fail; goto fail;294 295    if (0)296        goto fail;297 298    goto fail;299 300    if (0)301        FOO;302 303    goto fail;304 305fail:;306}307 308void f_label(int b) {309  if (b)310    return;311    a:312  return;313  goto a;314}315