[PATCH] D71846: [ASTMatchers] Fix for https://bugs.llvm.org/show_bug.cgi?id=44364

Nathan James via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 26 13:11:05 PST 2019


njames93 added a comment.

So I wasn't happy with the vagueness of the else after return check implementation. Almost finished rewriting the check to properly handle the if statements with condition variables based on scope restrictions and where decls are used etc.

  int *varInitAndCondition() {
    if (int *X = g(); X != nullptr) {
      return X;
    } else {
      h(&X);
      return X;
    }
  }
  int *varInitAndConditionUnusedInElseWithDecl() {
    int *Y = g();
    if (int *X = g(); X != nullptr) {
      return X;
    } else {
      int *Y = g();
      h(&Y);
    }
    return Y;
  }

transforms to

  int *varInitAndCondition() {
    int *X = g();
    if (X != nullptr) {
      return X;
    }
    h(&X);
    return X;
  }
  int *varInitAndConditionUnusedInElseWithDecl() {
    int *Y = g();
    if (int *X = g(); X != nullptr) {
      return X;
    } else {
      int *Y = g();
      h(&Y);
    }
    return Y;
  }

There's a few more test cases but that's the general idea. I'm having a little trouble writing the test cases as I can't run them on my windows machine to verify they report correctly


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71846/new/

https://reviews.llvm.org/D71846





More information about the cfe-commits mailing list