...
This commit is contained in:
@@ -24,20 +24,34 @@ public class ModuleRepository
|
||||
{
|
||||
case FuncSyntax funcDef:
|
||||
{
|
||||
var parameters = funcDef.Signature.Parameters.Select(x => x.Type).ToList();
|
||||
var type = new FuncTypeSyntax([], parameters, funcDef.Signature.ReturnType);
|
||||
module.RegisterFunction(funcDef.Exported, funcDef.Name, funcDef.ExternSymbol, type);
|
||||
var parameters = funcDef.Signature.Parameters.Select(x => new ModuleFunctionParameter(x.Name, x.Type)).ToList();
|
||||
module.RegisterFunction(funcDef.Exported, funcDef.Name, funcDef.ExternSymbol, parameters, funcDef.Signature.ReturnType);
|
||||
break;
|
||||
}
|
||||
case StructSyntax structDef:
|
||||
{
|
||||
var fields = structDef.Fields.Select(x => new ModuleStructTypeField(x.Name, x.Type, x.Value.HasValue)).ToList();
|
||||
module.RegisterStruct(structDef.Exported, structDef.Name, fields);
|
||||
var fields = structDef.Fields.Select(x => new ModuleStructField(x.Name, x.Type, x.Value.HasValue)).ToList();
|
||||
|
||||
var functions = new List<ModuleStructFunction>();
|
||||
foreach (var function in structDef.Functions)
|
||||
{
|
||||
var parameters = function.Signature.Parameters.Select(x => new ModuleStructFunctionParameter(x.Name, x.Type)).ToList();
|
||||
functions.AddRange(new ModuleStructFunction(function.Name, parameters, function.Signature.ReturnType));
|
||||
}
|
||||
|
||||
module.RegisterStruct(structDef.Exported, structDef.Name, fields, functions);
|
||||
break;
|
||||
}
|
||||
case InterfaceSyntax interfaceDef:
|
||||
{
|
||||
module.RegisterInterface(interfaceDef.Exported, interfaceDef.Name);
|
||||
var functions = new List<ModuleInterfaceFunction>();
|
||||
foreach (var function in interfaceDef.Functions)
|
||||
{
|
||||
var parameters = function.Signature.Parameters.Select(x => new ModuleInterfaceFunctionParameter(x.Name, x.Type)).ToList();
|
||||
functions.AddRange(new ModuleInterfaceFunction(function.Name, parameters, function.Signature.ReturnType));
|
||||
}
|
||||
|
||||
module.RegisterInterface(interfaceDef.Exported, interfaceDef.Name, functions);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user