Clean up examples
This commit is contained in:
@@ -292,16 +292,24 @@ public class Generator
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var returnValue = EmitExpression(returnNode.Value);
|
var returnValue = EmitExpression(returnNode.Value);
|
||||||
var tmp = NewTmp();
|
|
||||||
_writer.WriteLine($"{MapType(returnNode.Value.Type)} {tmp} = {returnValue};");
|
|
||||||
|
|
||||||
var blockDefers = _deferStack.Peek();
|
if (_deferStack.Peek().Count != 0)
|
||||||
for (var i = blockDefers.Count - 1; i >= 0; i--)
|
|
||||||
{
|
{
|
||||||
EmitStatement(blockDefers[i].Statement);
|
var tmp = NewTmp();
|
||||||
}
|
_writer.WriteLine($"{MapType(returnNode.Value.Type)} {tmp} = {returnValue};");
|
||||||
|
|
||||||
_writer.WriteLine($"return {tmp};");
|
var blockDefers = _deferStack.Peek();
|
||||||
|
for (var i = blockDefers.Count - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
EmitStatement(blockDefers[i].Statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
_writer.WriteLine($"return {tmp};");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_writer.WriteLine($"return {returnValue};");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
3
examples/array/.gitignore
vendored
3
examples/array/.gitignore
vendored
@@ -1,3 +0,0 @@
|
|||||||
.build
|
|
||||||
out.a
|
|
||||||
out
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
module "main"
|
|
||||||
|
|
||||||
extern "main" func main(args: []cstring): i64
|
|
||||||
{
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
NUBC = ../../compiler/NubLang.CLI/bin/Debug/net9.0/nubc
|
|
||||||
|
|
||||||
out: .build/out.o
|
|
||||||
gcc -nostartfiles -o out x86_64.s .build/out.o
|
|
||||||
|
|
||||||
.build/out.o: $(NUBC) main.nub
|
|
||||||
$(NUBC) main.nub
|
|
||||||
|
|
||||||
.PHONY: $(NUBC)
|
|
||||||
$(NUBC):
|
|
||||||
dotnet build ../../compiler/NubLang.CLI/NubLang.CLI.csproj
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@rm -r .build 2>/dev/null || true
|
|
||||||
@rm out 2>/dev/null || true
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
.intel_syntax noprefix
|
|
||||||
|
|
||||||
.text
|
|
||||||
.globl _start
|
|
||||||
_start:
|
|
||||||
mov rdi, rsp
|
|
||||||
call main
|
|
||||||
mov rdi, rax
|
|
||||||
mov rax, 60
|
|
||||||
syscall
|
|
||||||
@@ -2,33 +2,8 @@ module "main"
|
|||||||
|
|
||||||
extern "puts" func puts(text: cstring)
|
extern "puts" func puts(text: cstring)
|
||||||
|
|
||||||
struct Human
|
|
||||||
{
|
|
||||||
name: cstring
|
|
||||||
|
|
||||||
func print()
|
|
||||||
{
|
|
||||||
puts("human")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "main" func main(args: []cstring): i64
|
extern "main" func main(args: []cstring): i64
|
||||||
{
|
{
|
||||||
puts("test")
|
puts("test")
|
||||||
let test: Human = {
|
|
||||||
name = "uwu"
|
|
||||||
}
|
|
||||||
|
|
||||||
if false
|
|
||||||
{
|
|
||||||
puts("uwu")
|
|
||||||
}
|
|
||||||
|
|
||||||
while true
|
|
||||||
{
|
|
||||||
puts("count")
|
|
||||||
}
|
|
||||||
|
|
||||||
test.print()
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user