Files
boring-lang/examples/main.bl
2025-08-11 22:17:34 -06:00

98 lines
1.5 KiB
Plaintext

// adds a and b, but also 4 for some reason
fn add(a: i64, b: i64): i64 {
let foo = 4; // because I feel like it
let test_float: f64 = {
10.2
};
test_float = 5.0;
a + b + foo
}
fn subtract(a: i64, b: i64): i64 {
a - b
}
fn return_type_test(a: f64): f64 {
return a * 2.0;
}
fn i_hate_this(a: f64): f64 {
return {
return {
return a;
};
};
}
fn unit_function() {
let a: i64 = 4;
}
fn returns_user(): User {
return User{
id: 4,
};
}
fn get_user_id(): i64 {
let user = returns_user();
user.id = 5;
return user.id;
}
fn use_method(user: User): i64 {
return user.get_id();
}
type User struct {
id: i64,
}
type Generic[T] struct {
value: T,
}
impl User {
fn new(id: i64): Self {
return Self{
id: id,
};
}
fn get_id(self: Self): i64 {
return self.id;
}
}
fn if_expression(): i64 {
if (true) {
return 6;
} else {
return 9;
}
}
fn main(): i64 {
let a = User{id: 4};
let b = a.instance_method();
b
}
type TestTrait trait {
fn class_method(id: i64): Self;
fn instance_method(self: Self): i64;
fn default_impl(self: Self): i64;
}
impl TestTrait for User {
fn class_method(id: i64): Self {
return Self{id: id,};
}
fn instance_method(self: Self): i64 {
return self.get_id();
}
fn default_impl(self: Self): i64 {
return self.instance_method();
}
}