LGTM! ~Aaron
On Tue, Oct 29, 2013 at 2:32 PM, Chris Wailes <[email protected]> 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}} _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
