Ensure interface extends valid expr.

This commit is contained in:
Napalys
2025-03-14 08:44:37 +01:00
parent 40903a9643
commit 1468e81c55
7 changed files with 466 additions and 13 deletions

View File

@@ -69,4 +69,9 @@ public class MemberExpression extends Expression
public void setSymbol(int symbol) {
this.symbol = symbol;
}
@Override
public boolean isValidExpression() {
return object instanceof ITypeExpression || object instanceof DynamicImport;
}
}

View File

@@ -10,4 +10,6 @@ import com.semmle.js.ast.Literal;
* however, some expressions such as {@link Literal} type may occur in a type annotation because the
* TypeScript AST does not distinguish <code>null</code> literals from the <code>null</code> type.
*/
public interface ITypeExpression extends INode, ITypedAstNode {}
public interface ITypeExpression extends INode, ITypedAstNode {
public default boolean isValidExpression() { return true; }
}

View File

@@ -1907,7 +1907,7 @@ public class TypeScriptASTConverter {
}
private ITypeExpression asType(Node node) {
return node instanceof ITypeExpression ? (ITypeExpression) node : null;
return node instanceof ITypeExpression && ((ITypeExpression)node).isValidExpression() ? (ITypeExpression) node : null;
}
private List<ITypeExpression> convertChildrenAsTypes(JsonObject node, String child)