@@ -1010,6 +1010,12 @@ trait AstForDeclSyntaxCreator(implicit withSchemaValidation: ValidationMode) {
10101010 scope.pushNewMethodScope(methodFullName, methodName, block, capturingRefNode)
10111011 localAstParentStack.push(block)
10121012
1013+ val selfTpe = fullNameOfEnclosingTypeDecl()
1014+ val selfParameterNode =
1015+ parameterInNode(node, " self" , " self" , 0 , false , EvaluationStrategies .BY_SHARING , selfTpe)
1016+ scope.addVariable(" self" , selfParameterNode, selfTpe, VariableScopeManager .ScopeType .MethodScope )
1017+ val selfParameterNodeAst = Ast (selfParameterNode)
1018+
10131019 val parameterAsts = if (parameters.isEmpty && accessorSpecifier == " set" ) {
10141020 val name = " newValue" // Swift default parameter name for set accessors
10151021 val parameterNode = parameterInNode(node, name, name, 1 , false , EvaluationStrategies .BY_VALUE , Some (tpe))
@@ -1032,34 +1038,13 @@ trait AstForDeclSyntaxCreator(implicit withSchemaValidation: ValidationMode) {
10321038 }
10331039 .getOrElse(List .empty[Ast ])
10341040
1035- val syntheticBodyStmtAst = if (bodyStmtAsts.isEmpty) {
1036- accessorSpecifier match {
1037- case " set" =>
1038- val selfNode = identifierNode(node, " self" , " self" , fullNameOfEnclosingTypeDecl())
1039- scope.addVariableReference(" self" , selfNode, selfNode.typeFullName, EvaluationStrategies .BY_REFERENCE )
1040- val fieldAccess = fieldAccessAst(node, node, Ast (selfNode), s " self. $variableName" , variableName, tpe)
1041- val sourceName = parameterAsts.head.root.collect { case p : NewMethodParameterIn => p.name }.get
1042- val barIdentifier = identifierNode(node, sourceName, sourceName, tpe)
1043- scope.addVariableReference(sourceName, barIdentifier, tpe, EvaluationStrategies .BY_REFERENCE )
1044- List (createAssignmentCallAst(node, fieldAccess, Ast (barIdentifier), s " self. $variableName = $sourceName" ))
1045- case " get" =>
1046- val selfNode = identifierNode(node, " self" , " self" , fullNameOfEnclosingTypeDecl())
1047- scope.addVariableReference(" self" , selfNode, selfNode.typeFullName, EvaluationStrategies .BY_REFERENCE )
1048- val fieldAccess = fieldAccessAst(node, node, Ast (selfNode), s " self. $variableName" , variableName, tpe)
1049- List (returnAst(returnNode(node, variableName), List (fieldAccess)))
1050- case _ => List .empty[Ast ]
1051- }
1052- } else {
1053- bodyStmtAsts
1054- }
1055-
10561041 val methodReturnNode_ = methodReturnNode(node, returnType)
10571042
1058- val blockAst_ = blockAst(block, syntheticBodyStmtAst )
1043+ val blockAst_ = blockAst(block, bodyStmtAsts )
10591044 val astForMethod =
10601045 methodAstWithAnnotations(
10611046 methodNode_,
1062- parameterAsts,
1047+ selfParameterNodeAst +: parameterAsts,
10631048 blockAst_,
10641049 methodReturnNode_,
10651050 modifiers = modifiers,
@@ -1245,30 +1230,9 @@ trait AstForDeclSyntaxCreator(implicit withSchemaValidation: ValidationMode) {
12451230 }
12461231 .getOrElse(List .empty[Ast ])
12471232
1248- val syntheticBodyStmtAst = if (bodyStmtAsts.isEmpty) {
1249- accessorSpecifier match {
1250- case " set" =>
1251- val selfNode = identifierNode(node, " self" , " self" , fullNameOfEnclosingTypeDecl())
1252- scope.addVariableReference(" self" , selfNode, selfNode.typeFullName, EvaluationStrategies .BY_REFERENCE )
1253- val fieldAccess = fieldAccessAst(node, node, Ast (selfNode), s " self. $variableName" , variableName, tpe)
1254- val sourceName = parameterAsts.head.root.collect { case p : NewMethodParameterIn => p.name }.get
1255- val barIdentifier = identifierNode(node, sourceName, sourceName, tpe)
1256- scope.addVariableReference(sourceName, barIdentifier, tpe, EvaluationStrategies .BY_REFERENCE )
1257- List (createAssignmentCallAst(node, fieldAccess, Ast (barIdentifier), s " self. $variableName = $sourceName" ))
1258- case " get" =>
1259- val selfNode = identifierNode(node, " self" , " self" , fullNameOfEnclosingTypeDecl())
1260- scope.addVariableReference(" self" , selfNode, selfNode.typeFullName, EvaluationStrategies .BY_REFERENCE )
1261- val fieldAccess = fieldAccessAst(node, node, Ast (selfNode), s " self. $variableName" , variableName, tpe)
1262- List (returnAst(returnNode(node, variableName), List (fieldAccess)))
1263- case _ => List .empty[Ast ]
1264- }
1265- } else {
1266- bodyStmtAsts
1267- }
1268-
12691233 val methodReturnNode_ = methodReturnNode(node, returnType)
12701234
1271- val blockAst_ = blockAst(block, syntheticBodyStmtAst )
1235+ val blockAst_ = blockAst(block, bodyStmtAsts )
12721236 val astForMethod =
12731237 methodAstWithAnnotations(
12741238 methodNode_,
0 commit comments