Skip to content

Commit

Permalink
feat(grammar): Support SUPPRESSES_WARNING_6009 pragma
Browse files Browse the repository at this point in the history
  • Loading branch information
felipebz committed Sep 18, 2024
1 parent 8d1b9c4 commit 7149f96
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,6 @@
"adjsn/using-PLSQL-object-types-for-JSON-2.sql" : [
5
],
"lnpls/Supresses-warning-pragma-6009-1.sql" : [
5
],
"lnpls/Supresses-warning-pragma-6009-3.sql" : [
5
],
"lnpls/Supresses-warning-pragma-6009-9.sql" : [
4
],
"lnpls/dynamic-sql-12.sql" : [
7
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ enum class PlSqlGrammar : GrammarRuleKey {
RESTRICT_REFERENCES_PRAGMA,
UDF_PRAGMA,
DEPRECATE_PRAGMA,
SUPPRESSES_WARNING_6009_PRAGMA,
PRAGMA_DECLARATION,
HOST_AND_INDICATOR_VARIABLE,
JAVA_DECLARATION,
Expand Down Expand Up @@ -1010,14 +1011,21 @@ enum class PlSqlGrammar : GrammarRuleKey {

b.rule(DEPRECATE_PRAGMA).define(PRAGMA, DEPRECATE, LPARENTHESIS, EXPRESSION, b.optional(COMMA, STRING_LITERAL), RPARENTHESIS)

b.rule(PRAGMA_DECLARATION).define(b.firstOf(
b.rule(SUPPRESSES_WARNING_6009_PRAGMA)
.define(PRAGMA, SUPPRESSES_WARNING_6009, LPARENTHESIS, IDENTIFIER_NAME, RPARENTHESIS)

b.rule(PRAGMA_DECLARATION).define(
b.firstOf(
EXCEPTION_INIT_PRAGMA,
AUTONOMOUS_TRANSACTION_PRAGMA,
SERIALLY_REUSABLE_PRAGMA,
INTERFACE_PRAGMA,
RESTRICT_REFERENCES_PRAGMA,
UDF_PRAGMA,
b.sequence(DEPRECATE_PRAGMA, SEMICOLON)))
b.sequence(DEPRECATE_PRAGMA, SEMICOLON),
b.sequence(SUPPRESSES_WARNING_6009_PRAGMA, SEMICOLON)
)
)

b.rule(DECLARE_SECTION).define(b.oneOrMore(b.firstOf(
PRAGMA_DECLARATION,
Expand Down Expand Up @@ -1316,11 +1324,20 @@ enum class PlSqlGrammar : GrammarRuleKey {
b.firstOf(TYPE_SUBPROGRAM, TYPE_CONSTRUCTOR, MAP_ORDER_FUNCTION))

b.rule(OBJECT_TYPE_DEFINITION).define(
b.firstOf(
b.sequence(b.firstOf(IS, AS), OBJECT),
b.sequence(UNDER, UNIT_NAME)),
LPARENTHESIS, b.optional(DEPRECATE_PRAGMA, COMMA), b.oneOrMore(b.firstOf(TYPE_ELEMENT_SPEC, TYPE_ATTRIBUTE), b.optional(COMMA), b.optional(DEPRECATE_PRAGMA, b.optional(COMMA))), RPARENTHESIS,
b.zeroOrMore(b.optional(NOT), b.firstOf(FINAL, INSTANTIABLE)))
b.firstOf(
b.sequence(b.firstOf(IS, AS), OBJECT),
b.sequence(UNDER, UNIT_NAME)
),
LPARENTHESIS,
b.optional(b.firstOf(DEPRECATE_PRAGMA, SUPPRESSES_WARNING_6009_PRAGMA), COMMA),
b.oneOrMore(
b.firstOf(TYPE_ELEMENT_SPEC, TYPE_ATTRIBUTE),
b.optional(COMMA),
b.optional(b.firstOf(DEPRECATE_PRAGMA, SUPPRESSES_WARNING_6009_PRAGMA), b.optional(COMMA))
),
RPARENTHESIS,
b.zeroOrMore(b.optional(NOT), b.firstOf(FINAL, INSTANTIABLE))
)

b.rule(CREATE_TYPE).define(
CREATE, b.optional(OR, REPLACE), b.optional(b.firstOf(EDITIONABLE, NONEDITIONABLE)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -499,6 +499,7 @@ enum class PlSqlKeyword(override val value: String, val isReserved: Boolean = fa
SUBPARTITIONS("subpartitions"),
SUBSTITUTABLE("substitutable"),
SUBTYPE("subtype"),
SUPPRESSES_WARNING_6009("suppresses_warning_6009"),
SUSPEND("suspend"),
SYSDATE("sysdate"),
TABAUTH("tabauth"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,14 @@ class PragmaDeclarationTest : RuleTest() {
}

@Test
fun matchesPragmaDeprecate() {
fun matchesDeprecatePragma() {
assertThat(p).matches("pragma deprecate(object);")
assertThat(p).matches("pragma deprecate(object, 'object is deprecated');")
}

@Test
fun matchesSuppressWarning6009Pragma() {
assertThat(p).matches("pragma suppresses_warning_6009(pcd);")
}

}

0 comments on commit 7149f96

Please sign in to comment.