@@ -14,48 +14,53 @@ pub mod environment;
1414pub mod interpreter;
1515pub mod ir;
1616pub mod parser;
17- pub mod type_checker;
1817pub mod stdlib;
18+ pub mod type_checker;
1919
2020fn main ( ) {
2121 println ! ( "Hello, world!" ) ;
22-
22+
2323 // Testes da tabela estática de metabuiltins
24- test_metabuiltins_static_table ( ) ;
25-
24+ // test_metabuiltins_static_table();
25+
2626 // Teste interativo da função input
27- test_metabuiltins_input_interativo ( ) ;
27+ // test_metabuiltins_input_interativo();
2828}
2929
30+ /*
3031fn test_metabuiltins_static_table() {
3132 println!("\n=== Testando Tabela Estática de Metabuiltins ===");
32-
33+
3334 // Teste 1: Verificar se a tabela estática está disponível
3435 println!("1. Verificando disponibilidade da tabela estática...");
3536 let table = stdlib::standard_library::get_metabuiltins_table();
3637 println!(" ✓ Tabela estática criada com sucesso");
3738 println!(" ✓ Número de funções na tabela: {}", table.len());
38-
39+
3940 // Teste 2: Verificar se as funções esperadas estão presentes
4041 println!("\n2. Verificando funções na tabela...");
4142 if table.contains_key("input") {
4243 println!(" ✓ Função 'input' encontrada na tabela");
4344 } else {
4445 println!(" ✗ Função 'input' NÃO encontrada na tabela");
4546 }
46-
47+
4748 if table.contains_key("print") {
4849 println!(" ✓ Função 'print' encontrada na tabela");
4950 } else {
5051 println!(" ✗ Função 'print' NÃO encontrada na tabela");
5152 }
52-
53+
5354 // Teste 3: Verificar se as funções são callable
5455 println!("\n3. Testando se as funções são executáveis...");
5556 if let Some(print_func) = table.get("print") {
5657 let mut env = environment::environment::Environment::new();
57- env. map_variable ( "value" . to_string ( ) , false , ir:: ast:: Expression :: CString ( "Teste da tabela estática!" . to_string ( ) ) ) ;
58-
58+ env.map_variable(
59+ "value".to_string(),
60+ false,
61+ ir::ast::Expression::CString("Teste da tabela estática!".to_string()),
62+ );
63+
5964 let result = print_func(&mut env);
6065 match result {
6166 ir::ast::Statement::Return(_) => {
@@ -68,59 +73,63 @@ fn test_metabuiltins_static_table() {
6873 } else {
6974 println!(" ✗ Função 'print' não encontrada para teste");
7075 }
71-
76+
7277 // Teste 4: Verificar se a tabela é realmente estática (mesma referência)
7378 println!("\n4. Verificando se a tabela é realmente estática...");
7479 let table1 = stdlib::standard_library::get_metabuiltins_table();
7580 let table2 = stdlib::standard_library::get_metabuiltins_table();
76-
81+
7782 if std::ptr::eq(table1, table2) {
7883 println!(" ✓ Tabela é realmente estática (mesma referência)");
7984 } else {
8085 println!(" ✗ Tabela não é estática (referências diferentes)");
8186 }
82-
87+
8388 // Teste 5: Listar todas as funções disponíveis
8489 println!("\n5. Listando todas as funções disponíveis:");
8590 for (name, _) in table.iter() {
8691 println!(" - {}", name);
8792 }
88-
93+
8994 // Teste 6: Testar múltiplas chamadas da tabela
9095 println!("\n6. Testando múltiplas chamadas da tabela...");
9196 for i in 1..=3 {
9297 let table_call = stdlib::standard_library::get_metabuiltins_table();
9398 println!(" Chamada {}: {} funções encontradas", i, table_call.len());
9499 }
95-
100+
96101 // Teste 7: Testar função print com diferentes tipos
97102 println!("\n7. Testando função print com diferentes tipos...");
98103 if let Some(print_func) = table.get("print") {
99104 let mut env = environment::environment::Environment::new();
100-
105+
101106 // Teste com string
102- env. map_variable ( "value" . to_string ( ) , false , ir:: ast:: Expression :: CString ( "String test" . to_string ( ) ) ) ;
107+ env.map_variable(
108+ "value".to_string(),
109+ false,
110+ ir::ast::Expression::CString("String test".to_string()),
111+ );
103112 let _ = print_func(&mut env);
104-
113+
105114 // Teste com inteiro
106115 env.map_variable("value".to_string(), false, ir::ast::Expression::CInt(42));
107116 let _ = print_func(&mut env);
108-
117+
109118 // Teste com real
110119 env.map_variable("value".to_string(), false, ir::ast::Expression::CReal(3.14));
111120 let _ = print_func(&mut env);
112-
121+
113122 println!(" ✓ Função 'print' testada com diferentes tipos");
114123 }
115-
124+
116125 // Teste 8: Verificar que funções inexistentes não são encontradas
117126 println!("\n8. Verificando funções inexistentes...");
118127 if table.get("funcao_inexistente").is_none() {
119128 println!(" ✓ Função inexistente corretamente não encontrada");
120129 } else {
121130 println!(" ✗ Função inexistente foi encontrada (erro)");
122131 }
123-
132+
124133 println!("\n=== Testes da Tabela Estática Concluídos ===");
125134}
126135
@@ -131,7 +140,11 @@ fn test_metabuiltins_input_interativo() {
131140 if let Some(input_func) = table.get("input") {
132141 let mut env = environment::environment::Environment::new();
133142 // Definir um prompt customizado
134- env. map_variable ( "prompt" . to_string ( ) , false , ir:: ast:: Expression :: CString ( "Digite algo: " . to_string ( ) ) ) ;
143+ env.map_variable(
144+ "prompt".to_string(),
145+ false,
146+ ir::ast::Expression::CString("Digite algo: ".to_string()),
147+ );
135148
136149 // Chama a função input_builtin (vai esperar o usuário digitar algo)
137150 let result = input_func(&mut env);
@@ -141,12 +154,16 @@ fn test_metabuiltins_input_interativo() {
141154 // Extrair a string do CString
142155 if let ir::ast::Expression::CString(input_value) = *expr {
143156 println!(" ✓ Valor digitado: '{}'", input_value);
144-
157+
145158 // Agora usar a função print da tabela para mostrar o resultado
146159 if let Some(print_func) = table.get("print") {
147160 let mut print_env = environment::environment::Environment::new();
148- print_env. map_variable ( "value" . to_string ( ) , false , ir:: ast:: Expression :: CString ( format ! ( "Você digitou: {}" , input_value) ) ) ;
149-
161+ print_env.map_variable(
162+ "value".to_string(),
163+ false,
164+ ir::ast::Expression::CString(format!("Você digitou: {}", input_value)),
165+ );
166+
150167 println!(" Usando função print da tabela:");
151168 let _ = print_func(&mut print_env);
152169 }
@@ -162,6 +179,7 @@ fn test_metabuiltins_input_interativo() {
162179 println!(" ✗ Função 'input' não encontrada na tabela");
163180 }
164181}
182+ */
165183
166184/*
167185fn run_test(name: &str, program: &str) -> String {
0 commit comments