Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[L1] Type Checking Improvements #18341

Merged
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -24,7 +24,7 @@ type ErrorHandlerGenerator object {
BalToJVMIndexMap indexMap;
string currentPackageName;

public function __init(jvm:MethodVisitor mv, BalToJVMIndexMap indexMap, string currentPackageName) {
function __init(jvm:MethodVisitor mv, BalToJVMIndexMap indexMap, string currentPackageName) {
self.mv = mv;
self.indexMap = indexMap;
self.currentPackageName = currentPackageName;
Expand Down
Expand Up @@ -24,7 +24,7 @@ type InstructionGenerator object {
string currentPackageName;
bir:Package currentPackage;

public function __init(jvm:MethodVisitor mv, BalToJVMIndexMap indexMap, bir:Package moduleId) {
function __init(jvm:MethodVisitor mv, BalToJVMIndexMap indexMap, bir:Package moduleId) {
self.mv = mv;
self.indexMap = indexMap;
self.currentPackage = moduleId;
Expand Down
Expand Up @@ -27,7 +27,7 @@ type TerminatorGenerator object {
bir:Package module;
string currentPackageName;

public function __init(jvm:MethodVisitor mv, BalToJVMIndexMap indexMap, LabelGenerator labelGen,
function __init(jvm:MethodVisitor mv, BalToJVMIndexMap indexMap, LabelGenerator labelGen,
ErrorHandlerGenerator errorGen, bir:Package module) {
self.mv = mv;
self.indexMap = indexMap;
Expand Down
Expand Up @@ -82,9 +82,9 @@ public enum Flag {
*/
RECORD,
/**
* Temporary indicator for compensation variables.
* Indicator for ANONYMOUS types.
*/
COMPENSATE,
ANONYMOUS,
/**
* Indicates Flagged node is a abstract node.
*/
Expand Down
Expand Up @@ -26,6 +26,7 @@
*
* @since 0.970.0
*/
@Deprecated
public interface MatchExpressionNode extends ExpressionNode {

/**
Expand Down
Expand Up @@ -41,8 +41,6 @@
import org.wso2.ballerinalang.compiler.semantics.model.Scope;
import org.wso2.ballerinalang.compiler.semantics.model.SymbolEnv;
import org.wso2.ballerinalang.compiler.semantics.model.SymbolTable;
import org.wso2.ballerinalang.compiler.semantics.model.iterable.IterableContext;
import org.wso2.ballerinalang.compiler.semantics.model.iterable.Operation;
import org.wso2.ballerinalang.compiler.semantics.model.symbols.BAttachedFunction;
import org.wso2.ballerinalang.compiler.semantics.model.symbols.BConstantSymbol;
import org.wso2.ballerinalang.compiler.semantics.model.symbols.BErrorTypeSymbol;
Expand Down Expand Up @@ -269,7 +267,6 @@ public class Desugar extends BLangNodeVisitor {
private SymbolTable symTable;
private SymbolResolver symResolver;
private final SymbolEnter symbolEnter;
private IterableCodeDesugar iterableCodeDesugar;
private ClosureDesugar closureDesugar;
private StreamingCodeDesugar streamingCodeDesugar;
private AnnotationDesugar annotationDesugar;
Expand Down Expand Up @@ -315,7 +312,6 @@ private Desugar(CompilerContext context) {
this.symTable = SymbolTable.getInstance(context);
this.symResolver = SymbolResolver.getInstance(context);
this.symbolEnter = SymbolEnter.getInstance(context);
this.iterableCodeDesugar = IterableCodeDesugar.getInstance(context);
this.closureDesugar = ClosureDesugar.getInstance(context);
this.streamingCodeDesugar = StreamingCodeDesugar.getInstance(context);
this.annotationDesugar = AnnotationDesugar.getInstance(context);
Expand Down Expand Up @@ -3174,10 +3170,6 @@ public void visit(BLangInvocation iExpr) {
if (iExpr.functionPointerInvocation) {
visitFunctionPointerInvocation(iExpr);
return;
} else if (iExpr.iterableOperationInvocation) {
// TODO : Fix this.
visitIterableOperationInvocation(iExpr);
return;
}
iExpr.expr = rewriteExpr(iExpr.expr);
if (iExpr.builtinMethodInvocation) {
Expand All @@ -3186,8 +3178,9 @@ public void visit(BLangInvocation iExpr) {
}
result = genIExpr;

// TODO : Remove this if block. Not needed.

if (iExpr.expr == null) {
fixTypeCastInTypeParamInvocation(iExpr, genIExpr);
if (iExpr.exprSymbol == null) {
return;
}
Expand All @@ -3210,6 +3203,11 @@ public void visit(BLangInvocation iExpr) {
break;
}

fixTypeCastInTypeParamInvocation(iExpr, genIExpr);
}

private void fixTypeCastInTypeParamInvocation(BLangInvocation iExpr, BLangInvocation genIExpr) {

if (iExpr.langLibInvocation || TypeParamAnalyzer.containsTypeParam(((BInvokableSymbol) iExpr.symbol).retType)) {
BType originalInvType = genIExpr.type;
genIExpr.type = ((BInvokableSymbol) genIExpr.symbol).retType;
Expand All @@ -3223,7 +3221,7 @@ public void visit(BLangInvocation iExpr) {

BOperatorSymbol conversionSymbol = Symbols
.createCastOperatorSymbol(genIExpr.type, originalInvType, symTable.errorType, false, true,
InstructionCodes.NOP, null, null);
InstructionCodes.NOP, null, null);
BLangTypeConversionExpr conversionExpr = (BLangTypeConversionExpr) TreeBuilder.createTypeConversionNode();
conversionExpr.expr = genIExpr;
conversionExpr.targetType = originalInvType;
Expand Down Expand Up @@ -4744,22 +4742,6 @@ private void visitCallBuiltInMethodInvocation(BLangInvocation iExpr) {
result = new BFunctionPointerInvocation(iExpr, expr);
}

private void visitIterableOperationInvocation(BLangInvocation iExpr) {
IterableContext iContext = iExpr.iContext;
if (iContext.operations.getLast().iExpr != iExpr) {
result = null;
return;
}
for (Operation operation : iContext.operations) {
if (operation.iExpr.argExprs.size() > 0) {
operation.argExpression = rewrite(operation.iExpr.argExprs.get(0), env);
}
}
iterableCodeDesugar.desugar(iContext);
result = rewriteExpr(iContext.iteratorCaller);
}


@SuppressWarnings("unchecked")
<E extends BLangNode> E rewrite(E node, SymbolEnv env) {
if (node == null) {
Expand Down