Simplify builtins

This commit is contained in:
Andrew Morris
2023-05-29 14:46:24 +10:00
parent 3d6c8fda2d
commit 702506d315
12 changed files with 24 additions and 37 deletions

View File

@@ -15,8 +15,6 @@ use super::{
pub struct ArrayBuiltin {}
pub static ARRAY_BUILTIN: ArrayBuiltin = ArrayBuiltin {};
impl BuiltinObject for ArrayBuiltin {
fn bo_name() -> &'static str {
"Array"

View File

@@ -11,8 +11,6 @@ use super::builtin_object::BuiltinObject;
pub struct BooleanBuiltin {}
pub static BOOLEAN_BUILTIN: BooleanBuiltin = BooleanBuiltin {};
impl BuiltinObject for BooleanBuiltin {
fn bo_name() -> &'static str {
"Boolean"

View File

@@ -9,8 +9,6 @@ use super::builtin_object::BuiltinObject;
pub struct DebugBuiltin {}
pub static DEBUG_BUILTIN: DebugBuiltin = DebugBuiltin {};
impl BuiltinObject for DebugBuiltin {
fn bo_name() -> &'static str {
"Debug"

View File

@@ -16,8 +16,6 @@ use super::builtin_object::BuiltinObject;
pub struct ErrorBuiltin {}
pub static ERROR_BUILTIN: ErrorBuiltin = ErrorBuiltin {};
impl BuiltinObject for ErrorBuiltin {
fn bo_name() -> &'static str {
"Error"

View File

@@ -10,8 +10,6 @@ use super::builtin_object::BuiltinObject;
pub struct MathBuiltin {}
pub static MATH_BUILTIN: MathBuiltin = MathBuiltin {};
impl BuiltinObject for MathBuiltin {
fn bo_name() -> &'static str {
"Math"

View File

@@ -12,21 +12,28 @@ pub mod type_error_builtin;
use valuescript_common::BUILTIN_COUNT;
use crate::ValTrait;
use crate::vs_value::{ToVal, Val};
pub static BUILTIN_VALS: [&'static (dyn ValTrait + Sync); BUILTIN_COUNT] = [
&debug_builtin::DEBUG_BUILTIN,
&math_builtin::MATH_BUILTIN,
&string_builtin::STRING_BUILTIN,
&number_builtin::NUMBER_BUILTIN,
&boolean_builtin::BOOLEAN_BUILTIN,
&array_builtin::ARRAY_BUILTIN,
&number_builtin::IS_FINITE,
&number_builtin::IS_NAN,
&number_builtin::PARSE_FLOAT,
&number_builtin::PARSE_INT,
&error_builtin::ERROR_BUILTIN,
&type_error_builtin::TYPE_ERROR_BUILTIN,
&range_error_builtin::RANGE_ERROR_BUILTIN,
&symbol_builtin::SYMBOL_BUILTIN,
use self::{
array_builtin::ArrayBuiltin, boolean_builtin::BooleanBuiltin, debug_builtin::DebugBuiltin,
error_builtin::ErrorBuiltin, math_builtin::MathBuiltin, number_builtin::NumberBuiltin,
range_error_builtin::RangeErrorBuiltin, string_builtin::StringBuiltin,
symbol_builtin::SymbolBuiltin, type_error_builtin::TypeErrorBuiltin,
};
pub static BUILTIN_VALS: [fn() -> Val; BUILTIN_COUNT] = [
|| DebugBuiltin {}.to_val(),
|| MathBuiltin {}.to_val(),
|| StringBuiltin {}.to_val(),
|| NumberBuiltin {}.to_val(),
|| BooleanBuiltin {}.to_val(),
|| ArrayBuiltin {}.to_val(),
|| number_builtin::IS_FINITE.to_val(),
|| number_builtin::IS_NAN.to_val(),
|| number_builtin::PARSE_FLOAT.to_val(),
|| number_builtin::PARSE_INT.to_val(),
|| ErrorBuiltin {}.to_val(),
|| TypeErrorBuiltin {}.to_val(),
|| RangeErrorBuiltin {}.to_val(),
|| SymbolBuiltin {}.to_val(),
];

View File

@@ -14,8 +14,6 @@ use super::builtin_object::BuiltinObject;
pub struct NumberBuiltin {}
pub static NUMBER_BUILTIN: NumberBuiltin = NumberBuiltin {};
impl BuiltinObject for NumberBuiltin {
fn bo_name() -> &'static str {
"Number"

View File

@@ -15,8 +15,6 @@ use super::builtin_object::BuiltinObject;
pub struct RangeErrorBuiltin {}
pub static RANGE_ERROR_BUILTIN: RangeErrorBuiltin = RangeErrorBuiltin {};
impl BuiltinObject for RangeErrorBuiltin {
fn bo_name() -> &'static str {
"RangeError"

View File

@@ -15,8 +15,6 @@ use super::range_error_builtin::ToRangeError;
pub struct StringBuiltin {}
pub static STRING_BUILTIN: StringBuiltin = StringBuiltin {};
impl BuiltinObject for StringBuiltin {
fn bo_name() -> &'static str {
"String"

View File

@@ -10,8 +10,6 @@ use super::builtin_object::BuiltinObject;
pub struct SymbolBuiltin {}
pub static SYMBOL_BUILTIN: SymbolBuiltin = SymbolBuiltin {};
impl BuiltinObject for SymbolBuiltin {
fn bo_name() -> &'static str {
"Symbol"

View File

@@ -15,8 +15,6 @@ use super::builtin_object::BuiltinObject;
pub struct TypeErrorBuiltin {}
pub static TYPE_ERROR_BUILTIN: TypeErrorBuiltin = TypeErrorBuiltin {};
impl BuiltinObject for TypeErrorBuiltin {
fn bo_name() -> &'static str {
"TypeError"

View File

@@ -143,7 +143,7 @@ impl BytecodeDecoder {
Val::Void => Val::Undefined,
val => val,
},
BytecodeType::Builtin => Val::Static(BUILTIN_VALS[self.decode_varsize_uint()]),
BytecodeType::Builtin => BUILTIN_VALS[self.decode_varsize_uint()](),
BytecodeType::Class => VsClass {
constructor: self.decode_val(registers),
instance_prototype: self.decode_val(registers),