Skip to content

Commit 264374f

Browse files
ghislainpiotguillaume-dequenne
authored andcommitted
SONARPY-2134 Convert function parameters type to use TypeWrapper
1 parent f7641dc commit 264374f

File tree

4 files changed

+8
-5
lines changed

4 files changed

+8
-5
lines changed

python-frontend/src/main/java/org/sonar/python/semantic/v2/FunctionTypeBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@
3333
import org.sonar.plugins.python.api.tree.Tree;
3434
import org.sonar.python.tree.TreeUtils;
3535
import org.sonar.python.types.v2.FunctionType;
36+
import org.sonar.python.types.v2.LazyTypeWrapper;
3637
import org.sonar.python.types.v2.ParameterV2;
3738
import org.sonar.python.types.v2.PythonType;
39+
import org.sonar.python.types.v2.SimpleTypeWrapper;
3840
import org.sonar.python.types.v2.TypeOrigin;
3941

4042
import static org.sonar.python.tree.TreeUtils.locationInFile;
@@ -154,7 +156,7 @@ private void createParameterNames(List<AnyParameter> parameterTrees, @Nullable S
154156
if (anyParameter.is(Tree.Kind.PARAMETER)) {
155157
addParameter((org.sonar.plugins.python.api.tree.Parameter) anyParameter, fileId, parameterState);
156158
} else {
157-
parameters.add(new ParameterV2(null, PythonType.UNKNOWN, false,
159+
parameters.add(new ParameterV2(null, new SimpleTypeWrapper(PythonType.UNKNOWN), false,
158160
parameterState.keywordOnly, parameterState.positionalOnly, false, false, locationInFile(anyParameter, fileId)));
159161
}
160162
}
@@ -165,7 +167,7 @@ private void addParameter(org.sonar.plugins.python.api.tree.Parameter parameter,
165167
Token starToken = parameter.starToken();
166168
if (parameterName != null) {
167169
ParameterType parameterType = getParameterType(parameter);
168-
this.parameters.add(new ParameterV2(parameterName.name(), parameterType.pythonType(), parameter.defaultValue() != null,
170+
this.parameters.add(new ParameterV2(parameterName.name(), new LazyTypeWrapper(parameterType.pythonType()), parameter.defaultValue() != null,
169171
parameterState.keywordOnly, parameterState.positionalOnly, parameterType.isKeywordVariadic(), parameterType.isPositionalVariadic(), locationInFile(parameter, fileId)));
170172
if (starToken != null) {
171173
hasVariadicParameter = true;

python-frontend/src/main/java/org/sonar/python/semantic/v2/SymbolsModuleTypeProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.sonar.python.types.v2.ModuleType;
4949
import org.sonar.python.types.v2.ParameterV2;
5050
import org.sonar.python.types.v2.PythonType;
51+
import org.sonar.python.types.v2.SimpleTypeWrapper;
5152
import org.sonar.python.types.v2.TypeOrigin;
5253
import org.sonar.python.types.v2.UnionType;
5354

@@ -204,7 +205,7 @@ private PythonType convertToClassType(ClassSymbol symbol, Map<Symbol, PythonType
204205

205206
private static ParameterV2 convertParameter(FunctionSymbol.Parameter parameter) {
206207
return new ParameterV2(parameter.name(),
207-
PythonType.UNKNOWN,
208+
new SimpleTypeWrapper(PythonType.UNKNOWN),
208209
parameter.hasDefaultValue(),
209210
parameter.isKeywordOnly(),
210211
parameter.isPositionalOnly(),

python-frontend/src/main/java/org/sonar/python/types/v2/ParameterV2.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
@Beta
2727
public record ParameterV2(
2828
@Nullable String name,
29-
PythonType declaredType,
29+
TypeWrapper declaredType,
3030
boolean hasDefaultValue,
3131
boolean isKeywordOnly,
3232
boolean isPositionalOnly,

python-frontend/src/test/java/org/sonar/python/types/v2/FunctionTypeTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ void declaredTypes() {
146146
// TODO: SONARPY-1776 handle declared return type
147147
FunctionType functionType = functionType("def fn(p1: int): pass");
148148
assertThat(functionType.returnType()).isEqualTo(PythonType.UNKNOWN);
149-
assertThat(functionType.parameters()).extracting(ParameterV2::declaredType).containsExactly(PythonType.UNKNOWN);
149+
assertThat(functionType.parameters()).extracting(ParameterV2::declaredType).extracting(TypeWrapper::type).containsExactly(PythonType.UNKNOWN);
150150
}
151151

152152
@Test

0 commit comments

Comments
 (0)