...
This commit is contained in:
@@ -467,7 +467,7 @@ public class QBEGenerator
|
||||
|
||||
private void EmitBlock(BlockNode block, Scope? scope = null)
|
||||
{
|
||||
scope ??= Scope.SubScope();
|
||||
scope ??= new Scope();
|
||||
_scopes.Push(scope);
|
||||
|
||||
foreach (var statement in block.Statements)
|
||||
@@ -1295,12 +1295,6 @@ public class QBEGenerator
|
||||
return new NubStructType(definition.Module, definition.Name, fieldTypes, functionTypes);
|
||||
}
|
||||
|
||||
private NubFuncType TypeOfFunc(FuncSignatureNode signature)
|
||||
{
|
||||
var parameters = signature.Parameters.Select(x => x.Type).ToList();
|
||||
return new NubFuncType(parameters, signature.ReturnType);
|
||||
}
|
||||
|
||||
private string TmpName()
|
||||
{
|
||||
return $"%.t{++_tmpIndex}";
|
||||
@@ -1342,16 +1336,10 @@ public class QBEGenerator
|
||||
}
|
||||
}
|
||||
|
||||
// todo(nub31): Parent is not used when getting variables and deferred statements
|
||||
public class Scope(Scope? parent = null)
|
||||
public class Scope
|
||||
{
|
||||
public readonly Stack<StatementNode> DeferredStatements = [];
|
||||
public readonly Stack<Variable> Variables = [];
|
||||
|
||||
public Scope SubScope()
|
||||
{
|
||||
return new Scope(this);
|
||||
}
|
||||
}
|
||||
|
||||
public record Variable(string Name, NubType Type);
|
||||
|
||||
Reference in New Issue
Block a user