Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
fabioz committed Mar 1, 2025
1 parent 781fe89 commit ccf1dcd
Show file tree
Hide file tree
Showing 8 changed files with 229 additions and 134 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
import org.python.pydev.parser.jython.ast.Module;
import org.python.pydev.parser.jython.ast.Name;
import org.python.pydev.parser.jython.ast.Str;
import org.python.pydev.parser.jython.ast.TypeAlias;
import org.python.pydev.parser.jython.ast.exprType;
import org.python.pydev.parser.visitors.NodeUtils;
import org.python.pydev.parser.visitors.TypeInfo;
Expand Down Expand Up @@ -1010,6 +1011,17 @@ private Definition[] findDefinition(ICompletionState state, int line, int col, f
toRet.add(new Definition(tok, scopeVisitor.scope, this, true));
continue;
}

if (sourceToken.getFoundInTypeAlias() != null) {
TypeAlias node = sourceToken.getFoundInTypeAlias();
String target = tok.getRepresentation();
toRet.add(
FindDefinitionModelVisitor.getAssignDefinition(node, target, 0, line, col,
scopeVisitor.scope, this,
-1));
continue;
}

if (sourceTokenAst instanceof Assign) {
Assign node = (Assign) sourceTokenAst;
String target = tok.getRepresentation();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.python.pydev.parser.jython.ast.ImportFrom;
import org.python.pydev.parser.jython.ast.Name;
import org.python.pydev.parser.jython.ast.NameTok;
import org.python.pydev.parser.jython.ast.TypeAlias;
import org.python.pydev.parser.jython.ast.keywordType;
import org.python.pydev.parser.visitors.NodeUtils;
import org.python.pydev.shared_core.callbacks.ICallback;
Expand Down Expand Up @@ -364,6 +365,8 @@ public FunctionDef getAliased() {

private Call foundInCall;

private TypeAlias foundInTypeAlias;

public void setDefinition(Definition d) {
this.definition = d;
}
Expand Down Expand Up @@ -396,4 +399,12 @@ public Assign getDummyAssignFromParam() {
return dummyAssignFromParam;
}

public void setFoundInTypeAlias(TypeAlias node) {
this.foundInTypeAlias = node;
}

public TypeAlias getFoundInTypeAlias() {
return foundInTypeAlias;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.python.pydev.parser.jython.ast.NamedExpr;
import org.python.pydev.parser.jython.ast.Subscript;
import org.python.pydev.parser.jython.ast.Tuple;
import org.python.pydev.parser.jython.ast.TypeAlias;
import org.python.pydev.parser.jython.ast.aliasType;
import org.python.pydev.parser.jython.ast.comprehensionType;
import org.python.pydev.parser.jython.ast.exprType;
Expand Down Expand Up @@ -549,6 +550,22 @@ public static AssignDefinition getAssignDefinition(Assign node, String target, i
unpackPos);
}

public static AssignDefinition getAssignDefinition(TypeAlias node, String target, int targetPos, int line, int col,
ILocalScope scope, IModule module, int unpackPos) {
exprType nodeValue = node.value;
exprType nodeType = NodeUtils.extractOptionalValueSubscript(node.type);
String value = NodeUtils.getFullRepresentationString(nodeValue);
String type = NodeUtils.getFullRepresentationString(nodeType);
if (value == null) {
value = "";
}
if (type == null) {
type = "";
}
return new AssignDefinition(value, type, target, targetPos, node, line, col, scope, module, nodeValue, nodeType,
unpackPos);
}

public static int findUnpackPos(Assign foundInAssign, String representation) {
if (foundInAssign.targets != null) {
if (foundInAssign.targets.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.python.pydev.parser.jython.ast.Name;
import org.python.pydev.parser.jython.ast.Str;
import org.python.pydev.parser.jython.ast.Tuple;
import org.python.pydev.parser.jython.ast.TypeAlias;
import org.python.pydev.parser.jython.ast.exprType;
import org.python.pydev.parser.visitors.NodeUtils;
import org.python.pydev.shared_core.structure.FastStack;
Expand Down Expand Up @@ -145,6 +146,13 @@ public Object visitCall(Call node) throws Exception {
return null;
}

@Override
public Object visitTypeAlias(TypeAlias node) throws Exception {
SourceToken token = addToken(node.name);
token.setFoundInTypeAlias(node);
return null;
}

/**
* Visiting some name
*
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class FooClass:
def foo_method(self):
pass

type FooType = FooClass
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,11 @@ class C:
assertEquals(29, messages[0].getStartCol(doc));
}

public void testImportTypeAlias() {
doc = new Document("from extendable.typecheck.typemod import FooType\n" +
"print(FooType)\n");

checkNoError();
}

}
Loading

0 comments on commit ccf1dcd

Please sign in to comment.