[PATCH] Renamed tests_typestate attribute to test_typestate for consistency
Aaron Ballman
aaron.ballman at gmail.com
Tue Oct 29 11:46:32 PDT 2013
LGTM!
~Aaron
On Tue, Oct 29, 2013 at 2:32 PM, Chris Wailes <chris.wailes at gmail.com> wrote:
> Hi delesley, dblaikie, aaron.ballman,
>
> Change the name of the tests_typestate attribute to test_typestate so that it is consistent with the set_typestate attribute.
>
> http://llvm-reviews.chandlerc.com/D2055
>
> Files:
> include/clang/Basic/Attr.td
> lib/Analysis/Consumed.cpp
> lib/Sema/SemaDeclAttr.cpp
> test/SemaCXX/warn-consumed-analysis.cpp
> test/SemaCXX/warn-consumed-parsing.cpp
>
> Index: include/clang/Basic/Attr.td
> ===================================================================
> --- include/clang/Basic/Attr.td
> +++ include/clang/Basic/Attr.td
> @@ -995,8 +995,8 @@
> ["Unknown", "Consumed", "Unconsumed"]>];
> }
>
> -def TestsTypestate : InheritableAttr {
> - let Spellings = [GNU<"tests_typestate">];
> +def TestTypestate : InheritableAttr {
> + let Spellings = [GNU<"test_typestate">];
> let Subjects = [CXXMethod];
> let Args = [EnumArgument<"TestState", "ConsumedState",
> ["consumed", "unconsumed"],
> Index: lib/Analysis/Consumed.cpp
> ===================================================================
> --- lib/Analysis/Consumed.cpp
> +++ lib/Analysis/Consumed.cpp
> @@ -167,7 +167,7 @@
> }
>
> static bool isTestingFunction(const FunctionDecl *FunDecl) {
> - return FunDecl->hasAttr<TestsTypestateAttr>();
> + return FunDecl->hasAttr<TestTypestateAttr>();
> }
>
> static bool isValueType(QualType ParamType) {
> @@ -248,10 +248,10 @@
>
> static ConsumedState testsFor(const FunctionDecl *FunDecl) {
> assert(isTestingFunction(FunDecl));
> - switch (FunDecl->getAttr<TestsTypestateAttr>()->getTestState()) {
> - case TestsTypestateAttr::Unconsumed:
> + switch (FunDecl->getAttr<TestTypestateAttr>()->getTestState()) {
> + case TestTypestateAttr::Unconsumed:
> return CS_Unconsumed;
> - case TestsTypestateAttr::Consumed:
> + case TestTypestateAttr::Consumed:
> return CS_Consumed;
> }
> llvm_unreachable("invalid enum");
> Index: lib/Sema/SemaDeclAttr.cpp
> ===================================================================
> --- lib/Sema/SemaDeclAttr.cpp
> +++ lib/Sema/SemaDeclAttr.cpp
> @@ -1202,8 +1202,8 @@
> Attr.getAttributeSpellingListIndex()));
> }
>
> -static void handleTestsTypestateAttr(Sema &S, Decl *D,
> - const AttributeList &Attr) {
> +static void handleTestTypestateAttr(Sema &S, Decl *D,
> + const AttributeList &Attr) {
> if (!checkAttributeNumArgs(S, Attr, 1))
> return;
>
> @@ -1216,11 +1216,11 @@
> if (!checkForConsumableClass(S, cast<CXXMethodDecl>(D), Attr))
> return;
>
> - TestsTypestateAttr::ConsumedState TestState;
> + TestTypestateAttr::ConsumedState TestState;
> if (Attr.isArgIdent(0)) {
> IdentifierLoc *Ident = Attr.getArgAsIdent(0);
> StringRef Param = Ident->Ident->getName();
> - if (!TestsTypestateAttr::ConvertStrToConsumedState(Param, TestState)) {
> + if (!TestTypestateAttr::ConvertStrToConsumedState(Param, TestState)) {
> S.Diag(Ident->Loc, diag::warn_attribute_type_not_supported)
> << Attr.getName() << Param;
> return;
> @@ -1232,7 +1232,7 @@
> }
>
> D->addAttr(::new (S.Context)
> - TestsTypestateAttr(Attr.getRange(), S.Context, TestState,
> + TestTypestateAttr(Attr.getRange(), S.Context, TestState,
> Attr.getAttributeSpellingListIndex()));
> }
>
> @@ -4878,8 +4878,8 @@
> case AttributeList::AT_SetTypestate:
> handleSetTypestateAttr(S, D, Attr);
> break;
> - case AttributeList::AT_TestsTypestate:
> - handleTestsTypestateAttr(S, D, Attr);
> + case AttributeList::AT_TestTypestate:
> + handleTestTypestateAttr(S, D, Attr);
> break;
>
> // Type safety attributes.
> Index: test/SemaCXX/warn-consumed-analysis.cpp
> ===================================================================
> --- test/SemaCXX/warn-consumed-analysis.cpp
> +++ test/SemaCXX/warn-consumed-analysis.cpp
> @@ -7,7 +7,7 @@
> #define PARAM_TYPESTATE(state) __attribute__ ((param_typestate(state)))
> #define RETURN_TYPESTATE(state) __attribute__ ((return_typestate(state)))
> #define SET_TYPESTATE(state) __attribute__ ((set_typestate(state)))
> -#define TESTS_TYPESTATE(state) __attribute__ ((tests_typestate(state)))
> +#define TEST_TYPESTATE(state) __attribute__ ((test_typestate(state)))
>
> typedef decltype(nullptr) nullptr_t;
>
> @@ -37,10 +37,10 @@
> void unconsumedCall() const CALLABLE_WHEN("unconsumed");
> void callableWhenUnknown() const CALLABLE_WHEN("unconsumed", "unknown");
>
> - bool isValid() const TESTS_TYPESTATE(unconsumed);
> - operator bool() const TESTS_TYPESTATE(unconsumed);
> - bool operator!=(nullptr_t) const TESTS_TYPESTATE(unconsumed);
> - bool operator==(nullptr_t) const TESTS_TYPESTATE(consumed);
> + bool isValid() const TEST_TYPESTATE(unconsumed);
> + operator bool() const TEST_TYPESTATE(unconsumed);
> + bool operator!=(nullptr_t) const TEST_TYPESTATE(unconsumed);
> + bool operator==(nullptr_t) const TEST_TYPESTATE(consumed);
>
> void constCall() const;
> void nonconstCall();
> Index: test/SemaCXX/warn-consumed-parsing.cpp
> ===================================================================
> --- test/SemaCXX/warn-consumed-parsing.cpp
> +++ test/SemaCXX/warn-consumed-parsing.cpp
> @@ -4,7 +4,7 @@
> #define CONSUMABLE(state) __attribute__ ((consumable(state)))
> #define SET_TYPESTATE(state) __attribute__ ((set_typestate(state)))
> #define RETURN_TYPESTATE(state) __attribute__ ((return_typestate(state)))
> -#define TESTS_TYPESTATE(state) __attribute__ ((tests_typestate(state)))
> +#define TEST_TYPESTATE(state) __attribute__ ((test_typestate(state)))
>
> // FIXME: This test is here because the warning is issued by the Consumed
> // analysis, not SemaDeclAttr. The analysis won't run after an error
> @@ -17,28 +17,28 @@
> }
>
> class AttrTester0 {
> - void consumes() __attribute__ ((set_typestate())); // expected-error {{attribute takes one argument}}
> - bool testsUnconsumed() __attribute__ ((tests_typestate())); // expected-error {{attribute takes one argument}}
> - void callableWhen() __attribute__ ((callable_when())); // expected-error {{attribute takes at least 1 argument}}
> + void consumes() __attribute__ ((set_typestate())); // expected-error {{attribute takes one argument}}
> + bool testUnconsumed() __attribute__ ((test_typestate())); // expected-error {{attribute takes one argument}}
> + void callableWhen() __attribute__ ((callable_when())); // expected-error {{attribute takes at least 1 argument}}
> };
>
> int var0 SET_TYPESTATE(consumed); // expected-warning {{'set_typestate' attribute only applies to methods}}
> -int var1 TESTS_TYPESTATE(consumed); // expected-warning {{'tests_typestate' attribute only applies to methods}}
> +int var1 TEST_TYPESTATE(consumed); // expected-warning {{'test_typestate' attribute only applies to methods}}
> int var2 CALLABLE_WHEN("consumed"); // expected-warning {{'callable_when' attribute only applies to methods}}
> int var3 CONSUMABLE(consumed); // expected-warning {{'consumable' attribute only applies to classes}}
> int var4 RETURN_TYPESTATE(consumed); // expected-warning {{'return_typestate' attribute only applies to functions}}
>
> void function0() SET_TYPESTATE(consumed); // expected-warning {{'set_typestate' attribute only applies to methods}}
> -void function1() TESTS_TYPESTATE(consumed); // expected-warning {{'tests_typestate' attribute only applies to methods}}
> +void function1() TEST_TYPESTATE(consumed); // expected-warning {{'test_typestate' attribute only applies to methods}}
> void function2() CALLABLE_WHEN("consumed"); // expected-warning {{'callable_when' attribute only applies to methods}}
> void function3() CONSUMABLE(consumed); // expected-warning {{'consumable' attribute only applies to classes}}
>
> class CONSUMABLE(unknown) AttrTester1 {
> - void callableWhen0() CALLABLE_WHEN("unconsumed");
> - void callableWhen1() CALLABLE_WHEN(42); // expected-error {{'callable_when' attribute requires a string}}
> - void callableWhen2() CALLABLE_WHEN("foo"); // expected-warning {{'callable_when' attribute argument not supported: foo}}
> - void consumes() SET_TYPESTATE(consumed);
> - bool testsUnconsumed() TESTS_TYPESTATE(consumed);
> + void callableWhen0() CALLABLE_WHEN("unconsumed");
> + void callableWhen1() CALLABLE_WHEN(42); // expected-error {{'callable_when' attribute requires a string}}
> + void callableWhen2() CALLABLE_WHEN("foo"); // expected-warning {{'callable_when' attribute argument not supported: foo}}
> + void consumes() SET_TYPESTATE(consumed);
> + bool testUnconsumed() TEST_TYPESTATE(consumed);
> };
>
> AttrTester1 returnTypestateTester0() RETURN_TYPESTATE(not_a_state); // expected-warning {{'return_typestate' attribute argument not supported: 'not_a_state'}}
> @@ -47,9 +47,9 @@
> void returnTypestateTester2(AttrTester1 &Param RETURN_TYPESTATE(unconsumed));
>
> class AttrTester2 {
> - void callableWhen() CALLABLE_WHEN("unconsumed"); // expected-warning {{consumed analysis attribute is attached to member of class 'AttrTester2' which isn't marked as consumable}}
> - void consumes() SET_TYPESTATE(consumed); // expected-warning {{consumed analysis attribute is attached to member of class 'AttrTester2' which isn't marked as consumable}}
> - bool testsUnconsumed() TESTS_TYPESTATE(consumed); // expected-warning {{consumed analysis attribute is attached to member of class 'AttrTester2' which isn't marked as consumable}}
> + void callableWhen() CALLABLE_WHEN("unconsumed"); // expected-warning {{consumed analysis attribute is attached to member of class 'AttrTester2' which isn't marked as consumable}}
> + void consumes() SET_TYPESTATE(consumed); // expected-warning {{consumed analysis attribute is attached to member of class 'AttrTester2' which isn't marked as consumable}}
> + bool testUnconsumed() TEST_TYPESTATE(consumed); // expected-warning {{consumed analysis attribute is attached to member of class 'AttrTester2' which isn't marked as consumable}}
> };
>
> class CONSUMABLE(42) AttrTester3; // expected-error {{'consumable' attribute requires an identifier}}
More information about the cfe-commits
mailing list