Improved error handling for struct types

This commit is contained in:
Eduard Urbach 2025-02-08 16:29:56 +01:00
parent 97cdcbd1cb
commit 526385280a
Signed by: akyoto
GPG Key ID: C874F672B1AF20C0
5 changed files with 22 additions and 9 deletions

View File

@ -13,7 +13,7 @@ accept(fd Int, address Pointer, length Int) -> Int {
return syscall(43, fd, address, length) return syscall(43, fd, address, length)
} }
bind(fd Int, address Pointer, length Int) -> Int { bind(fd Int, address *sockaddr_in, length Int) -> Int {
return syscall(49, fd, address, length) return syscall(49, fd, address, length)
} }

View File

@ -1,3 +1,8 @@
nanosleep(duration Pointer) -> Int { struct timespec {
seconds Int
nanoseconds Int
}
nanosleep(duration *timespec) -> Int {
return syscall(35, duration, 0) return syscall(35, duration, 0)
} }

View File

@ -7,7 +7,7 @@ sleep(nanoseconds Int) {
seconds, nanoseconds = nanoseconds / 1000000000 seconds, nanoseconds = nanoseconds / 1000000000
} }
duration := new(timespec) duration := new(sys.timespec)
duration.seconds = seconds duration.seconds = seconds
duration.nanoseconds = nanoseconds duration.nanoseconds = nanoseconds
sys.nanosleep(duration) sys.nanosleep(duration)

View File

@ -1,4 +0,0 @@
struct timespec {
seconds Int
nanoseconds Int
}

View File

@ -8,7 +8,13 @@ import (
func ByName(name string, pkg string, structs map[string]*Struct) Type { func ByName(name string, pkg string, structs map[string]*Struct) Type {
if strings.HasPrefix(name, "*") { if strings.HasPrefix(name, "*") {
to := strings.TrimPrefix(name, "*") to := strings.TrimPrefix(name, "*")
return &Pointer{To: ByName(to, pkg, structs)} typ := ByName(to, pkg, structs)
if typ != nil {
return &Pointer{To: typ}
}
return nil
} }
switch name { switch name {
@ -32,5 +38,11 @@ func ByName(name string, pkg string, structs map[string]*Struct) Type {
return PointerAny return PointerAny
} }
return structs[pkg+"."+name] typ, exists := structs[pkg+"."+name]
if !exists {
return nil
}
return typ
} }