Files
kraken/tests/test_ctce.krak

111 lines
2.3 KiB
Plaintext

import io: *
import os: *
import string: *
import ast_nodes: *
obj first {
var p1: *char
var p2: char
var p3: int
}
obj second {
var p1: *char
var p2: char
var p3: short
}
obj third {
var p1: *char
var p2: long
var p3: char
}
obj fourth {
var p1: char
var p2: *char
var p3: long
}
obj fifth {
var p1: *char
var p2: char
}
obj sixth {
var p1: *char
var p2: char
var p3: long
}
obj seventh {
var p1: char
var p2: *char
var p3: long
}
obj eigth {
var p1: short
var p2: char
}
obj ninth {
var p1: *char
var p2: short
}
obj tenth {
var p1: char
var p2: ninth
}
fun compare_sizes<T>() {
var a = #sizeof<T>
var b = #ctce(#sizeof<T>)
println(a == b)
if (a != b)
println(string() + a + " is not the same size as " + b)
}
fun main(): int {
var a = #ctce(1+2)
println(a)
println(#ctce("junkhello, world"+4))
for (var i = 0; i < 10; i++;) {
println(#ctce(fun(): *char {
println("\n\n=====During CTCE!=====\n\n")
var it = from_system_command(string("echo From Shell"), 100)
return it.toCharArray()
}()))
}
compare_sizes<first>()
compare_sizes<second>()
compare_sizes<third>()
compare_sizes<fourth>()
compare_sizes<fifth>()
compare_sizes<sixth>()
compare_sizes<seventh>()
compare_sizes<eigth>()
compare_sizes<ninth>()
compare_sizes<tenth>()
compare_sizes<string>()
compare_sizes<ast_node>()
compare_sizes<translation_unit>()
compare_sizes<import>()
compare_sizes<identifier>()
compare_sizes<type_def>()
compare_sizes<adt_def>()
compare_sizes<function>()
compare_sizes<template>()
compare_sizes<code_block>()
compare_sizes<if_statement>()
compare_sizes<match_statement>()
compare_sizes<case_statement>()
compare_sizes<while_loop>()
compare_sizes<for_loop>()
compare_sizes<return_statement>()
compare_sizes<branching_statement>()
compare_sizes<defer_statement>()
compare_sizes<assignment_statement>()
compare_sizes<declaration_statement>()
compare_sizes<if_comp>()
compare_sizes<simple_passthrough>()
compare_sizes<function_call>()
compare_sizes<compiler_intrinsic>()
compare_sizes<cast>()
compare_sizes<value>()
return 0
}