diff --git a/ets2panda/linter/src/lib/TypeScriptLinter.ts b/ets2panda/linter/src/lib/TypeScriptLinter.ts index ca016e788deed8cac98949f5a15cda3d9feb096a..bedc60c5d5c38adb71cfb74401d1d2c94c263cde 100644 --- a/ets2panda/linter/src/lib/TypeScriptLinter.ts +++ b/ets2panda/linter/src/lib/TypeScriptLinter.ts @@ -5806,6 +5806,7 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { private handleConstructorDeclaration(node: ts.Node): void { const ctorDecl = node as ts.ConstructorDeclaration; + this.checkDefaultParamBeforeRequired(ctorDecl); this.handleTSOverload(ctorDecl); const paramProperties = ctorDecl.parameters.filter((x) => { return this.tsUtils.hasAccessModifier(x); diff --git a/ets2panda/linter/test/main/default_required_args.ets b/ets2panda/linter/test/main/default_required_args.ets index cbccdb42cf31c8bdadd160e270814f14ec671829..613b5ac307b2e9511bb410529417538300235a77 100644 --- a/ets2panda/linter/test/main/default_required_args.ets +++ b/ets2panda/linter/test/main/default_required_args.ets @@ -57,4 +57,17 @@ function log(level: string = 'info', some: string, message?: string): void { function config(debug: boolean = true, verbose?: boolean): string { //legal return `Debug: ${debug ?? false}, Verbose: ${verbose ?? false}`; +} + +export class DefaultArgsA { + readonly left: number; + readonly right: number; + constructor(left: number = 0.0, right: number) { // 漏扫 + this.left = left; + this.right = right; + } + + defaultArgsFoo1(left: number = 0.0, right: number): number { + return left + right; + } } \ No newline at end of file diff --git a/ets2panda/linter/test/main/default_required_args.ets.arkts2.json b/ets2panda/linter/test/main/default_required_args.ets.arkts2.json index bbcdfcb08550783a6ee99afe23bf3147a0334e5f..33a446a7017acd20152c663e8960786dc2be8dd3 100644 --- a/ets2panda/linter/test/main/default_required_args.ets.arkts2.json +++ b/ets2panda/linter/test/main/default_required_args.ets.arkts2.json @@ -173,6 +173,26 @@ "suggest": "", "rule": "Default parameters must be placed after mandatory parameters (arkts-default-args-behind-required-args)", "severity": "ERROR" + }, + { + "line": 65, + "column": 15, + "endLine": 65, + "endColumn": 19, + "problem": "DefaultArgsBehindRequiredArgs", + "suggest": "", + "rule": "Default parameters must be placed after mandatory parameters (arkts-default-args-behind-required-args)", + "severity": "ERROR" + }, + { + "line": 70, + "column": 19, + "endLine": 70, + "endColumn": 23, + "problem": "DefaultArgsBehindRequiredArgs", + "suggest": "", + "rule": "Default parameters must be placed after mandatory parameters (arkts-default-args-behind-required-args)", + "severity": "ERROR" } ] } \ No newline at end of file diff --git a/ets2panda/linter/test/main/parameter_properties.ets.arkts2.json b/ets2panda/linter/test/main/parameter_properties.ets.arkts2.json index 70d8cbcfa4df48aa1d164eeb6c88d7ce540829db..a4cd69b2173b1a88ba75033250ea92bf6425fb14 100644 --- a/ets2panda/linter/test/main/parameter_properties.ets.arkts2.json +++ b/ets2panda/linter/test/main/parameter_properties.ets.arkts2.json @@ -84,6 +84,16 @@ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", "severity": "ERROR" }, + { + "line": 34, + "column": 33, + "endLine": 34, + "endColumn": 34, + "problem": "DefaultArgsBehindRequiredArgs", + "suggest": "", + "rule": "Default parameters must be placed after mandatory parameters (arkts-default-args-behind-required-args)", + "severity": "ERROR" + }, { "line": 34, "column": 26, diff --git a/ets2panda/linter/test/main/parameter_properties.ets.autofix.json b/ets2panda/linter/test/main/parameter_properties.ets.autofix.json index cd0ccd75eea12792b175ccd228d33d91e6cb5b8f..6e139d8b9efbcf3d68ec3cd90f849f418ed88c76 100644 --- a/ets2panda/linter/test/main/parameter_properties.ets.autofix.json +++ b/ets2panda/linter/test/main/parameter_properties.ets.autofix.json @@ -269,6 +269,16 @@ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", "severity": "ERROR" }, + { + "line": 34, + "column": 33, + "endLine": 34, + "endColumn": 34, + "problem": "DefaultArgsBehindRequiredArgs", + "suggest": "", + "rule": "Default parameters must be placed after mandatory parameters (arkts-default-args-behind-required-args)", + "severity": "ERROR" + }, { "line": 34, "column": 26, diff --git a/ets2panda/linter/test/main/parameter_properties.ets.migrate.json b/ets2panda/linter/test/main/parameter_properties.ets.migrate.json index 03cac9f4e47f0a3b2f7cc5966991917f603ee4d0..f5bbbab5413b751bcc375dc9c7b788749e4839a7 100644 --- a/ets2panda/linter/test/main/parameter_properties.ets.migrate.json +++ b/ets2panda/linter/test/main/parameter_properties.ets.migrate.json @@ -14,6 +14,16 @@ "limitations under the License." ], "result": [ + { + "line": 43, + "column": 24, + "endLine": 43, + "endColumn": 25, + "problem": "DefaultArgsBehindRequiredArgs", + "suggest": "", + "rule": "Default parameters must be placed after mandatory parameters (arkts-default-args-behind-required-args)", + "severity": "ERROR" + }, { "line": 54, "column": 15,