Browse Source

Remove `type` prefix declarations

Ginger Bill 8 years ago
parent
commit
4f28e9e1fb

+ 102 - 106
core/_preload.odin

@@ -25,91 +25,89 @@ import (
 
 // IMPORTANT NOTE(bill): Do not change the order of any of this data
 // The compiler relies upon this _exact_ order
-type (
-	TypeInfoEnumValue raw_union {
-		f: f64,
-		i: i128,
-	}
-	// NOTE(bill): This must match the compiler's
-	CallingConvention enum {
-		Invalid         = 0,
-		Odin            = 1,
-		Contextless     = 2,
-		C               = 3,
-		Std             = 4,
-		Fast            = 5,
-	}
-
-	TypeInfoRecord struct #ordered {
-		types:        []^TypeInfo,
-		names:        []string,
-		offsets:      []int,  // offsets may not be used in tuples
-		usings:       []bool, // usings may not be used in tuples
-		packed:       bool,
-		ordered:      bool,
-		custom_align: bool,
-	}
-
-	TypeInfo union {
-		size:  int,
-		align: int,
-
-		Named{name: string, base: ^TypeInfo},
-		Integer{signed: bool},
-		Rune{},
-		Float{},
-		Complex{},
-		String{},
-		Boolean{},
-		Any{},
-		Pointer{
-			elem: ^TypeInfo, // nil -> rawptr
+TypeInfoEnumValue :: raw_union {
+	f: f64,
+	i: i128,
+}
+// NOTE(bill): This must match the compiler's
+CallingConvention :: enum {
+	Invalid         = 0,
+	Odin            = 1,
+	Contextless     = 2,
+	C               = 3,
+	Std             = 4,
+	Fast            = 5,
+}
+
+TypeInfoRecord :: struct #ordered {
+	types:        []^TypeInfo,
+	names:        []string,
+	offsets:      []int,  // offsets may not be used in tuples
+	usings:       []bool, // usings may not be used in tuples
+	packed:       bool,
+	ordered:      bool,
+	custom_align: bool,
+}
+
+TypeInfo :: union {
+	size:  int,
+	align: int,
+
+	Named{name: string, base: ^TypeInfo},
+	Integer{signed: bool},
+	Rune{},
+	Float{},
+	Complex{},
+	String{},
+	Boolean{},
+	Any{},
+	Pointer{
+		elem: ^TypeInfo, // nil -> rawptr
+	},
+	Atomic{elem: ^TypeInfo},
+	Procedure{
+		params:     ^TypeInfo, // TypeInfo.Tuple
+		results:    ^TypeInfo, // TypeInfo.Tuple
+		variadic:   bool,
+		convention: CallingConvention,
+	},
+	Array{
+		elem:      ^TypeInfo,
+		elem_size: int,
+		count:     int,
+	},
+	DynamicArray{elem: ^TypeInfo, elem_size: int},
+	Slice       {elem: ^TypeInfo, elem_size: int},
+	Vector      {elem: ^TypeInfo, elem_size, count: int},
+	Tuple       {using record: TypeInfoRecord}, // Only really used for procedures
+	Struct      {using record: TypeInfoRecord},
+	RawUnion    {using record: TypeInfoRecord},
+	Union{
+		common_fields: struct {
+			types:     []^TypeInfo,
+			names:     []string,
+			offsets:   []int,    // offsets may not be used in tuples
 		},
-		Atomic{elem: ^TypeInfo},
-		Procedure{
-			params:     ^TypeInfo, // TypeInfo.Tuple
-			results:    ^TypeInfo, // TypeInfo.Tuple
-			variadic:   bool,
-			convention: CallingConvention,
-		},
-		Array{
-			elem:      ^TypeInfo,
-			elem_size: int,
-			count:     int,
-		},
-		DynamicArray{elem: ^TypeInfo, elem_size: int},
-		Slice       {elem: ^TypeInfo, elem_size: int},
-		Vector      {elem: ^TypeInfo, elem_size, count: int},
-		Tuple       {using record: TypeInfoRecord}, // Only really used for procedures
-		Struct      {using record: TypeInfoRecord},
-		RawUnion    {using record: TypeInfoRecord},
-		Union{
-			common_fields: struct {
-				types:     []^TypeInfo,
-				names:     []string,
-				offsets:   []int,    // offsets may not be used in tuples
-			},
-			variant_names: []string,
-			variant_types: []^TypeInfo,
-		},
-		Enum{
-			base:   ^TypeInfo,
-			names:  []string,
-			values: []TypeInfoEnumValue,
-		},
-		Map{
-			key:              ^TypeInfo,
-			value:            ^TypeInfo,
-			generated_struct: ^TypeInfo,
-			count:            int, // == 0 if dynamic
-		},
-		BitField{
-			names:   []string,
-			bits:    []i32,
-			offsets: []i32,
-		},
-	}
-)
+		variant_names: []string,
+		variant_types: []^TypeInfo,
+	},
+	Enum{
+		base:   ^TypeInfo,
+		names:  []string,
+		values: []TypeInfoEnumValue,
+	},
+	Map{
+		key:              ^TypeInfo,
+		value:            ^TypeInfo,
+		generated_struct: ^TypeInfo,
+		count:            int, // == 0 if dynamic
+	},
+	BitField{
+		names:   []string,
+		bits:    []i32,
+		offsets: []i32,
+	},
+}
 
 // NOTE(bill): only the ones that are needed (not all types)
 // This will be set by the compiler
@@ -154,37 +152,35 @@ foreign __llvm_core {
 }
 
 // IMPORTANT NOTE(bill): Must be in this order (as the compiler relies upon it)
-type (
-	AllocatorMode enum u8 {
-		Alloc,
-		Free,
-		FreeAll,
-		Resize,
-	}
-	AllocatorProc proc(allocator_data: rawptr, mode: AllocatorMode,
-	                   size, alignment: int,
-	                   old_memory: rawptr, old_size: int, flags: u64 = 0) -> rawptr;
-	Allocator struct #ordered {
-		procedure: AllocatorProc,
-		data:      rawptr,
-	}
+AllocatorMode :: enum u8 {
+	Alloc,
+	Free,
+	FreeAll,
+	Resize,
+}
+AllocatorProc :: proc(allocator_data: rawptr, mode: AllocatorMode,
+                      size, alignment: int,
+                      old_memory: rawptr, old_size: int, flags: u64 = 0) -> rawptr;
+Allocator :: struct #ordered {
+	procedure: AllocatorProc,
+	data:      rawptr,
+}
 
 
-	Context struct #ordered {
-		thread_id:  int,
+Context :: struct #ordered {
+	thread_id:  int,
 
-		allocator:  Allocator,
+	allocator:  Allocator,
 
-		user_data:  rawptr,
-		user_index: int,
-	}
-)
+	user_data:  rawptr,
+	user_index: int,
+}
 
 // #thread_local var __context: Context;
 
 
 
-type SourceCodeLocation struct {
+SourceCodeLocation :: struct {
 	fully_pathed_filename: string,
 	line, column:          i64,
 	procedure:             string,

+ 2 - 2
core/_soft_numbers.odin

@@ -6,12 +6,12 @@ proc __multi3(a, b: u128) -> u128 #cc_c #link_name "__multi3" {
 
 
 	when ODIN_ENDIAN == "bit" {
-		type TWords raw_union {
+		TWords :: raw_union {
 			all: u128,
 			using _: struct {lo, hi: u64},
 		};
 	} else {
-		type TWords raw_union {
+		TWords :: raw_union {
 			all: u128,
 			using _: struct {hi, lo: u64},
 		};

+ 1 - 1
core/decimal.odin

@@ -2,7 +2,7 @@
 // Multiple precision decimal numbers
 // NOTE: This is only for floating point printing and nothing else
 
-type Decimal struct {
+Decimal :: struct {
 	digits:        [384]u8, // big-endian digits
 	count:         int,
 	decimal_point: int,

+ 2 - 2
core/fmt.odin

@@ -9,12 +9,12 @@ import (
 
 _BUFFER_SIZE :: 1<<12;
 
-type StringBuffer union {
+StringBuffer :: union {
 	Static {buf: []u8},
 	Dynamic{buf: [dynamic]u8},
 }
 
-type FmtInfo struct {
+FmtInfo :: struct {
 	minus:     bool,
 	plus:      bool,
 	space:     bool,

+ 10 - 12
core/math.odin

@@ -16,18 +16,16 @@ EPSILON      :: 1.19209290e-7;
 τ :: TAU;
 π :: PI;
 
-type (
-	Vec2 [vector 2]f32;
-	Vec3 [vector 3]f32;
-	Vec4 [vector 4]f32;
-
-	// Column major
-	Mat2 [2][2]f32;
-	Mat3 [3][3]f32;
-	Mat4 [4][4]f32;
-
-	Complex complex64;
-)
+Vec2 :: [vector 2]f32;
+Vec3 :: [vector 3]f32;
+Vec4 :: [vector 4]f32;
+
+// Column major
+Mat2 :: [2][2]f32;
+Mat3 :: [3][3]f32;
+Mat4 :: [4][4]f32;
+
+Complex :: complex64;
 
 foreign __llvm_core {
 	proc sqrt(x: f32) -> f32          #link_name "llvm.sqrt.f32";

+ 13 - 13
core/mem.odin

@@ -52,7 +52,7 @@ proc align_forward(ptr: rawptr, align: int) -> rawptr {
 
 
 
-type AllocationHeader struct {
+AllocationHeader :: struct {
 	size: int,
 }
 
@@ -80,19 +80,19 @@ proc allocation_header(data: rawptr) -> ^AllocationHeader {
 
 
 // Custom allocators
-type (
-	Arena struct {
-		backing:    Allocator,
-		offset:     int,
-		memory:     []u8,
-		temp_count: int,
-	}
 
-	ArenaTempMemory struct {
-		arena:          ^Arena,
-		original_count: int,
-	}
-)
+Arena :: struct {
+	backing:    Allocator,
+	offset:     int,
+	memory:     []u8,
+	temp_count: int,
+}
+
+ArenaTempMemory :: struct {
+	arena:          ^Arena,
+	original_count: int,
+}
+
 
 
 

+ 5 - 7
core/os_linux.odin

@@ -4,11 +4,9 @@ foreign_system_library (
 )
 import "strings.odin";
 
-type (
-	Handle   i32;
-	FileTime u64;
-	Errno    i32;
-)
+Handle   :: i32;
+FileTime :: u64;
+Errno    :: i32;
 
 
 O_RDONLY   :: 0x00000;
@@ -42,7 +40,7 @@ RTLD_GLOBAL       :: 0x100;
 // "Argv" arguments converted to Odin strings
 args := _alloc_command_line_arguments();
 
-type _FileTime struct #ordered {
+_FileTime :: struct #ordered {
 	seconds:     i64,
 	nanoseconds: i32,
 	reserved:    i32,
@@ -52,7 +50,7 @@ type _FileTime struct #ordered {
 //  https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/jb-dev/sysroot/usr/include/bits/stat.h
 // Validity is not guaranteed.
 
-type Stat struct #ordered {
+Stat :: struct #ordered {
 	device_id:     u64, // ID of device containing file
 	serial:        u64, // File serial number
 	nlink:         u32, // Number of hard links

+ 4 - 5
core/os_windows.odin

@@ -1,9 +1,8 @@
 import win32 "sys/windows.odin";
 
-type (
-	Handle   int;
-	FileTime u64;
-)
+Handle   :: int;
+FileTime :: u64;
+
 
 INVALID_HANDLE: Handle : -1;
 
@@ -22,7 +21,7 @@ O_SYNC     :: 0x01000;
 O_ASYNC    :: 0x02000;
 O_CLOEXEC  :: 0x80000;
 
-type Errno int;
+Errno :: int;
 
 ERROR_NONE:                   Errno : 0;
 ERROR_FILE_NOT_FOUND:         Errno : 2;

+ 6 - 9
core/os_x.odin

@@ -5,13 +5,10 @@ foreign_system_library (
 
 import "strings.odin";
 
-type (
-	Handle    i32;
-	FileTime  u64;
-	Errno     int;
-
-	AddressSize int;
-)
+Handle      :: i32;
+FileTime    :: u64;
+Errno       :: int;
+AddressSize :: int;
 
 
 O_RDONLY   :: 0x00000;
@@ -50,12 +47,12 @@ RTLD_FIRST    :: 0x100;
 
 args: [dynamic]string;
 
-type _FileTime struct #ordered {
+_FileTime :: struct #ordered {
 	seconds: i64,
 	nanoseconds: i64
 }
 
-type Stat struct #ordered {
+Stat :: struct #ordered {
 	device_id : i32, // ID of device containing file
 	mode      : u16, // Mode of the file
 	nlink     : u16, // Number of hard links

+ 24 - 25
core/raw.odin

@@ -1,29 +1,28 @@
-type (
-	Any struct #ordered {
-		data:      rawptr,
-		type_info: ^TypeInfo,
-	};
+Any :: struct #ordered {
+	data:      rawptr,
+	type_info: ^TypeInfo,
+};
 
-	String struct #ordered {
-		data: ^u8,
-		len:  int,
-	};
+String :: struct #ordered {
+	data: ^u8,
+	len:  int,
+};
 
-	Slice struct #ordered {
-		data: rawptr,
-		len:  int,
-		cap:  int,
-	};
+Slice :: struct #ordered {
+	data: rawptr,
+	len:  int,
+	cap:  int,
+};
 
-	DynamicArray struct #ordered {
-		data:      rawptr,
-		len:       int,
-		cap:       int,
-		allocator: Allocator,
-	};
+DynamicArray :: struct #ordered {
+	data:      rawptr,
+	len:       int,
+	cap:       int,
+	allocator: Allocator,
+};
+
+DynamicMap :: struct #ordered {
+	hashes:  [dynamic]int,
+	entries: DynamicArray,
+};
 
-	DynamicMap struct #ordered {
-		hashes:  [dynamic]int,
-		entries: DynamicArray,
-	};
-)

+ 1 - 1
core/strconv.odin

@@ -1,6 +1,6 @@
 import . "decimal.odin";
 
-type IntFlag enum {
+IntFlag :: enum {
 	Prefix = 1<<0,
 	Plus   = 1<<1,
 	Space  = 1<<2,

+ 2 - 2
core/sync_linux.odin

@@ -3,11 +3,11 @@ import (
 	"os.odin";
 )
 
-type Semaphore struct {
+Semaphore :: struct {
 	// _handle: win32.Handle,
 }
 
-type Mutex struct {
+Mutex :: struct {
 	_semaphore: Semaphore,
 	_counter:   i32,
 	_owner:     i32,

+ 2 - 2
core/sync_windows.odin

@@ -3,11 +3,11 @@ import (
 	"atomics.odin";
 )
 
-type Semaphore struct {
+Semaphore :: struct {
 	_handle: win32.Handle,
 }
 
-type Mutex struct {
+Mutex :: struct {
 	_semaphore: Semaphore,
 	_counter:   i32,
 	_owner:     i32,

+ 42 - 46
core/sys/wgl.odin

@@ -10,56 +10,52 @@ CONTEXT_FORWARD_COMPATIBLE_BIT_ARB    :: 0x0002;
 CONTEXT_CORE_PROFILE_BIT_ARB          :: 0x00000001;
 CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB :: 0x00000002;
 
-type (
-	Hglrc    Handle;
-	ColorRef u32;
+Hglrc    :: Handle;
+ColorRef :: u32;
 
-	LayerPlaneDescriptor struct {
-		size:             u16,
-		version:          u16,
-		flags:            u32,
-		pixel_type:       u8,
-		color_bits:       u8,
-		red_bits:         u8,
-		red_shift:        u8,
-		green_bits:       u8,
-		green_shift:      u8,
-		blue_bits:        u8,
-		blue_shift:       u8,
-		alpha_bits:       u8,
-		alpha_shift:      u8,
-		accum_bits:       u8,
-		accum_red_bits:   u8,
-		accum_green_bits: u8,
-		accum_blue_bits:  u8,
-		accum_alpha_bits: u8,
-		depth_bits:       u8,
-		stencil_bits:     u8,
-		aux_buffers:      u8,
-		layer_type:       u8,
-		reserved:         u8,
-		transparent:      ColorRef,
-	}
+LayerPlaneDescriptor :: struct {
+	size:             u16,
+	version:          u16,
+	flags:            u32,
+	pixel_type:       u8,
+	color_bits:       u8,
+	red_bits:         u8,
+	red_shift:        u8,
+	green_bits:       u8,
+	green_shift:      u8,
+	blue_bits:        u8,
+	blue_shift:       u8,
+	alpha_bits:       u8,
+	alpha_shift:      u8,
+	accum_bits:       u8,
+	accum_red_bits:   u8,
+	accum_green_bits: u8,
+	accum_blue_bits:  u8,
+	accum_alpha_bits: u8,
+	depth_bits:       u8,
+	stencil_bits:     u8,
+	aux_buffers:      u8,
+	layer_type:       u8,
+	reserved:         u8,
+	transparent:      ColorRef,
+}
 
-	PointFloat struct {
-		x, y: f32,
-	}
+PointFloat :: struct {
+	x, y: f32,
+}
 
-	Glyph_MetricsFloat struct {
-		black_box_x:  f32,
-		black_box_y:  f32,
-		glyph_origin: PointFloat,
-		cell_inc_x:   f32,
-		cell_inc_y:   f32,
-	}
-)
+Glyph_MetricsFloat :: struct {
+	black_box_x:  f32,
+	black_box_y:  f32,
+	glyph_origin: PointFloat,
+	cell_inc_x:   f32,
+	cell_inc_y:   f32,
+}
 
-type (
-	CreateContextAttribsARBType proc(hdc: Hdc, h_share_context: rawptr, attribList: ^i32) -> Hglrc;
-	ChoosePixelFormatARBType    proc(hdc: Hdc, attrib_i_list: ^i32, attrib_f_list: ^f32, max_formats: u32, formats: ^i32, num_formats : ^u32) -> Bool #cc_c;
-	SwapIntervalEXTType         proc(interval: i32) -> bool #cc_c;
-	GetExtensionsStringARBType  proc(Hdc) -> ^u8 #cc_c;
-)
+CreateContextAttribsARBType :: proc(hdc: Hdc, h_share_context: rawptr, attribList: ^i32) -> Hglrc;
+ChoosePixelFormatARBType    :: proc(hdc: Hdc, attrib_i_list: ^i32, attrib_f_list: ^f32, max_formats: u32, formats: ^i32, num_formats : ^u32) -> Bool #cc_c;
+SwapIntervalEXTType         :: proc(interval: i32) -> bool #cc_c;
+GetExtensionsStringARBType  :: proc(Hdc) -> ^u8 #cc_c;
 
 // Procedures
 	create_context_attribs_arb: CreateContextAttribsARBType;

+ 19 - 21
core/sys/windows.odin

@@ -6,25 +6,23 @@ foreign_system_library (
 	"shell32.lib"  when ODIN_OS == "windows";
 )
 
-type (
-	Handle    rawptr;
-	Hwnd      Handle;
-	Hdc       Handle;
-	Hinstance Handle;
-	Hicon     Handle;
-	Hcursor   Handle;
-	Hmenu     Handle;
-	Hbrush    Handle;
-	Hgdiobj   Handle;
-	Hmodule   Handle;
-	Hmonitor  Handle;
-	Wparam    uint;
-	Lparam    int;
-	Lresult   int;
-	WndProc   proc(Hwnd, u32, Wparam, Lparam) -> Lresult #cc_c;
-)
-
-type Bool i32;
+Handle    :: rawptr;
+Hwnd      :: Handle;
+Hdc       :: Handle;
+Hinstance :: Handle;
+Hicon     :: Handle;
+Hcursor   :: Handle;
+Hmenu     :: Handle;
+Hbrush    :: Handle;
+Hgdiobj   :: Handle;
+Hmodule   :: Handle;
+Hmonitor  :: Handle;
+Wparam    :: uint;
+Lparam    :: int;
+Lresult   :: int;
+WndProc   :: proc(Hwnd, u32, Wparam, Lparam) -> Lresult #cc_c;
+
+Bool :: i32;
 FALSE: Bool : 0;
 TRUE:  Bool : 1;
 
@@ -147,7 +145,7 @@ PixelFormatDescriptor :: struct #ordered {
 
 
 
-type Proc proc() #cc_c;
+Proc :: proc() #cc_c;
 
 MAPVK_VK_TO_VSC    :: 0;
 MAPVK_VSC_TO_VK    :: 1;
@@ -268,7 +266,7 @@ PFD_DEPTH_DONTCARE        :: 0x20000000;
 PFD_DOUBLEBUFFER_DONTCARE :: 0x40000000;
 PFD_STEREO_DONTCARE       :: 0x80000000;
 
-type GET_FILEEX_INFO_LEVELS i32;
+GET_FILEEX_INFO_LEVELS :: i32;
 GetFileExInfoStandard: GET_FILEEX_INFO_LEVELS : 0;
 GetFileExMaxInfoLevel: GET_FILEEX_INFO_LEVELS : 1;
 

+ 1 - 1
src/check_decl.cpp

@@ -194,7 +194,7 @@ void check_const_decl(Checker *c, Entity *e, AstNode *type_expr, AstNode *init,
 	if (init != NULL) {
 		check_expr_or_type(c, &operand, init);
 	}
-#if 0
+#if 1
 	if (operand.mode == Addressing_Type) {
 		e->kind = Entity_TypeName;
 

+ 3 - 7
src/parser.cpp

@@ -3033,10 +3033,12 @@ void parse_foreign_block_decl(AstFile *f, Array<AstNode *> *decls) {
 	case AstNode_BadDecl:
 		return;
 
+	case AstNode_ValueDecl:
 	case AstNode_ProcDecl:
 		array_add(decls, decl);
 		return;
 
+
 	case AstNode_GenDecl:
 		switch (decl->GenDecl.token.kind) {
 		case Token_var:
@@ -3170,12 +3172,6 @@ AstNode *parse_value_decl(AstFile *f, Array<AstNode *> names, CommentGroup docs)
 
 AstNode *parse_simple_stmt(AstFile *f, StmtAllowFlag flags) {
 	Token token = f->curr_token;
-	switch (f->curr_token.kind) {
-	case Token_var:
-	case Token_const:
-		return parse_decl(f);
-	}
-
 	CommentGroup docs = f->lead_comment;
 
 	Array<AstNode *> lhs = parse_lhs_expr_list(f);
@@ -4333,7 +4329,7 @@ AstNode *parse_stmt(AstFile *f) {
 	// case Token_var:
 	// case Token_const:
 	case Token_proc:
-	case Token_type:
+	// case Token_type:
 	case Token_import:
 	case Token_import_load:
 	case Token_foreign: