Luma 0.1.0
A low-level compiled alternative to C, C++, and more!
Loading...
Searching...
No Matches
Macros | Functions
stmt.c File Reference
#include <stdio.h>
#include <string.h>
#include "type.h"
Include dependency graph for stmt.c:

Macros

#define ADD_DATA_FIELD(fname, ftype)
 
#define REGISTER_INHERITED_METHODS(mbr_arr, mbr_cnt)
 
#define PROCESS_METHOD(member, is_pub)
 

Functions

bool contains_alloc_expression (AstNode *expr)
 
const char * extract_variable_name (AstNode *expr)
 
bool is_pointer_assignment (AstNode *assignment)
 
bool typecheck_var_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_func_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_spread_decl (AstNode *spread, Scope *scope, ArenaAllocator *arena, const char *child_name, GrowableArray *seen_names, AstNode ***member_types, const char ***member_names, size_t *member_count)
 
bool typecheck_struct_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_enum_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_return_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_if_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_module_stmt (AstNode *node, Scope *global_scope, ArenaAllocator *arena)
 
bool typecheck_use_stmt (AstNode *node, Scope *current_scope, Scope *global_scope, ArenaAllocator *arena)
 
bool typecheck_infinite_loop_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_while_loop_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_for_loop_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_loop_decl (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
void find_enum_members (Scope *scope, const char *enum_name, GrowableArray *members, ArenaAllocator *arena)
 
bool typecheck_switch_stmt (AstNode *node, Scope *scope, ArenaAllocator *arena)
 
bool typecheck_case_stmt (AstNode *node, Scope *scope, ArenaAllocator *arena, AstNode *expected_type)
 
bool typecheck_default_stmt (AstNode *node, Scope *scope, ArenaAllocator *arena)
 

Macro Definition Documentation

◆ ADD_DATA_FIELD

#define ADD_DATA_FIELD (   fname,
  ftype 
)
Value:
do { \
char **slot = (char **)growable_array_push(&seen_names); \
if (!slot) { \
tc_error(node, "Internal Error", "Failed to track field name"); \
return false; \
} \
*slot = (char *)(fname); \
all_member_types[member_index] = (ftype); \
all_member_names[member_index] = (fname); \
member_index++; \
} while(0)
void * growable_array_push(GrowableArray *arr)
Pushes a new element onto the growable array, resizing if necessary.
Definition memory.c:571

◆ PROCESS_METHOD

#define PROCESS_METHOD (   member,
  is_pub 
)

◆ REGISTER_INHERITED_METHODS

#define REGISTER_INHERITED_METHODS (   mbr_arr,
  mbr_cnt 
)

Function Documentation

◆ contains_alloc_expression()

bool contains_alloc_expression ( AstNode expr)

◆ extract_variable_name()

const char * extract_variable_name ( AstNode expr)

◆ find_enum_members()

void find_enum_members ( Scope scope,
const char *  enum_name,
GrowableArray members,
ArenaAllocator arena 
)

◆ is_pointer_assignment()

bool is_pointer_assignment ( AstNode assignment)

◆ typecheck_case_stmt()

bool typecheck_case_stmt ( AstNode node,
Scope scope,
ArenaAllocator arena,
AstNode expected_type 
)

◆ typecheck_default_stmt()

bool typecheck_default_stmt ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_enum_decl()

bool typecheck_enum_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_for_loop_decl()

bool typecheck_for_loop_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_func_decl()

bool typecheck_func_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_if_decl()

bool typecheck_if_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_infinite_loop_decl()

bool typecheck_infinite_loop_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_loop_decl()

bool typecheck_loop_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_module_stmt()

bool typecheck_module_stmt ( AstNode node,
Scope global_scope,
ArenaAllocator arena 
)

◆ typecheck_return_decl()

bool typecheck_return_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_spread_decl()

bool typecheck_spread_decl ( AstNode spread,
Scope scope,
ArenaAllocator arena,
const char *  child_name,
GrowableArray seen_names,
AstNode ***  member_types,
const char ***  member_names,
size_t *  member_count 
)

◆ typecheck_struct_decl()

bool typecheck_struct_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_switch_stmt()

bool typecheck_switch_stmt ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_use_stmt()

bool typecheck_use_stmt ( AstNode node,
Scope current_scope,
Scope global_scope,
ArenaAllocator arena 
)

◆ typecheck_var_decl()

bool typecheck_var_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)

◆ typecheck_while_loop_decl()

bool typecheck_while_loop_decl ( AstNode node,
Scope scope,
ArenaAllocator arena 
)