diff --git a/src/main/java/com/trivadis/tvdcc/validators/TrivadisPlsqlNaming.xtend b/src/main/java/com/trivadis/tvdcc/validators/TrivadisPlsqlNaming.xtend index 8f90101..1f3e4ef 100644 --- a/src/main/java/com/trivadis/tvdcc/validators/TrivadisPlsqlNaming.xtend +++ b/src/main/java/com/trivadis/tvdcc/validators/TrivadisPlsqlNaming.xtend @@ -312,17 +312,19 @@ class TrivadisPlsqlNaming extends PLSQLJavaValidator implements PLSQLCopValidato val parent = p.eContainer if (!(parent instanceof CursorDeclarationOrDefinition)) { val name = p.parameter.value.toLowerCase - if (p.in && p.out) { - if (!name.startsWith(PREFIX_IN_OUT_PARAMETER_NAME)) { - warning(ISSUE_IN_OUT_PARAMETER_NAME, p.parameter, p) - } - } else if (p.out) { - if (!name.startsWith(PREFIX_OUT_PARAMETER_NAME)) { - warning(ISSUE_OUT_PARAMETER_NAME, p.parameter, p) - } - } else if (!p.self) { - if (!name.startsWith(PREFIX_IN_PARAMETER_NAME)) { - warning(ISSUE_IN_PARAMETER_NAME, p.parameter, p) + if (name != "self") { + if (p.in && p.out) { + if (!name.startsWith(PREFIX_IN_OUT_PARAMETER_NAME)) { + warning(ISSUE_IN_OUT_PARAMETER_NAME, p.parameter, p) + } + } else if (p.out) { + if (!name.startsWith(PREFIX_OUT_PARAMETER_NAME)) { + warning(ISSUE_OUT_PARAMETER_NAME, p.parameter, p) + } + } else { + if (!name.startsWith(PREFIX_IN_PARAMETER_NAME)) { + warning(ISSUE_IN_PARAMETER_NAME, p.parameter, p) + } } } } diff --git a/src/test/java/com/trivadis/tvdcc/validators/tests/TrivadisPlsqlNamingTest.xtend b/src/test/java/com/trivadis/tvdcc/validators/tests/TrivadisPlsqlNamingTest.xtend index 3a40f49..a24b14c 100644 --- a/src/test/java/com/trivadis/tvdcc/validators/tests/TrivadisPlsqlNamingTest.xtend +++ b/src/test/java/com/trivadis/tvdcc/validators/tests/TrivadisPlsqlNamingTest.xtend @@ -311,6 +311,23 @@ class TrivadisPlsqlNamingTest extends AbstractValidatorTest { Assert.assertEquals(0, issues.filter[it.code == "G-9008"].size) } + @Test + def void SelfInParameterNameOk() { + val stmt = ''' + CREATE OR REPLACE TYPE rectangle AUTHID definer AS OBJECT ( + rect_length NUMBER, + rect_width NUMBER, + member FUNCTION get_surface ( + self IN rectangle + ) RETURN NUMBER + ); + ''' + val issues = stmt.issues + Assert.assertEquals(0, issues.filter[it.code == "G-9008"].size) + } + + + @Test def void outParameterNameNok() { val stmt = ''' @@ -375,6 +392,22 @@ class TrivadisPlsqlNamingTest extends AbstractValidatorTest { Assert.assertEquals(0, issues.filter[it.code == "G-9010"].size) } + @Test + def void SelfInOutParameterNameOk() { + val stmt = ''' + CREATE OR REPLACE TYPE rectangle AUTHID definer AS OBJECT ( + rect_length NUMBER, + rect_width NUMBER, + CONSTRUCTOR FUNCTION rectangle ( + self IN OUT NOCOPY rectangle, + in_length_and_width IN NUMBER + ) RETURN SELF AS RESULT + ); + ''' + val issues = stmt.issues + Assert.assertEquals(0, issues.filter[it.code == "G-9010"].size) + } + @Test def void recordTypeNameNok() { val stmt = '''