authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-22 23:24:09-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-01-22 23:24:09-07:00
logbfceb186319f52011762129c879abbe27eaa0161
treec6d875f2168c925ec6ffa15412be849c4a35c55d
parente269caae02778c5b15a101c42d2d2d5150af59c8

character literal returns a number literal


4 files changed, 14 insertions(+), 25 deletions(-)

src/analyze.cpp+2-1
...@@ -3648,7 +3648,8 @@ static TypeTableEntry *analyze_expression(CodeGen *g, ImportTableEntry *import,...@@ -3648,7 +3648,8 @@ static TypeTableEntry *analyze_expression(CodeGen *g, ImportTableEntry *import,
3648 return_type = analyze_string_literal_expr(g, import, context, expected_type, node);3648 return_type = analyze_string_literal_expr(g, import, context, expected_type, node);
3649 break;3649 break;
3650 case NodeTypeCharLiteral:3650 case NodeTypeCharLiteral:
3651 return_type = g->builtin_types.entry_u8;3651 return_type = resolve_expr_const_val_as_unsigned_num_lit(g, node, expected_type,
3652 node->data.char_literal.value);
3652 break;3653 break;
3653 case NodeTypeBoolLiteral:3654 case NodeTypeBoolLiteral:
3654 return_type = resolve_expr_const_val_as_bool(g, node, node->data.bool_literal.value);3655 return_type = resolve_expr_const_val_as_bool(g, node, node->data.bool_literal.value);
src/codegen.cpp+4-16
...@@ -1828,12 +1828,6 @@ static LLVMValueRef gen_var_decl_expr(CodeGen *g, AstNode *node) {...@@ -1828,12 +1828,6 @@ static LLVMValueRef gen_var_decl_expr(CodeGen *g, AstNode *node) {
1828 get_resolved_expr(node)->block_context, false, &init_val);1828 get_resolved_expr(node)->block_context, false, &init_val);
1829}1829}
18301830
1831static LLVMValueRef gen_error_literal(CodeGen *g, AstNode *node) {
1832 assert(node->type == NodeTypeErrorLiteral);
1833
1834 zig_panic("TODO gen_error_literal");
1835}
1836
1837static LLVMValueRef gen_symbol(CodeGen *g, AstNode *node) {1831static LLVMValueRef gen_symbol(CodeGen *g, AstNode *node) {
1838 assert(node->type == NodeTypeSymbol);1832 assert(node->type == NodeTypeSymbol);
1839 VariableTableEntry *variable = node->data.symbol_expr.variable;1833 VariableTableEntry *variable = node->data.symbol_expr.variable;
...@@ -1953,12 +1947,6 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {...@@ -1953,12 +1947,6 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {
1953 return gen_slice_expr(g, node);1947 return gen_slice_expr(g, node);
1954 case NodeTypeFieldAccessExpr:1948 case NodeTypeFieldAccessExpr:
1955 return gen_field_access_expr(g, node, false);1949 return gen_field_access_expr(g, node, false);
1956 case NodeTypeNullLiteral:
1957 // caught by constant expression eval codegen
1958 zig_unreachable();
1959 case NodeTypeUndefinedLiteral:
1960 // caught by constant expression eval codegen
1961 zig_unreachable();
1962 case NodeTypeIfBoolExpr:1950 case NodeTypeIfBoolExpr:
1963 return gen_if_bool_expr(g, node);1951 return gen_if_bool_expr(g, node);
1964 case NodeTypeIfVarExpr:1952 case NodeTypeIfVarExpr:
...@@ -1969,10 +1957,6 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {...@@ -1969,10 +1957,6 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {
1969 return gen_for_expr(g, node);1957 return gen_for_expr(g, node);
1970 case NodeTypeAsmExpr:1958 case NodeTypeAsmExpr:
1971 return gen_asm_expr(g, node);1959 return gen_asm_expr(g, node);
1972 case NodeTypeErrorLiteral:
1973 return gen_error_literal(g, node);
1974 case NodeTypeCharLiteral:
1975 return LLVMConstInt(LLVMInt8Type(), node->data.char_literal.value, false);
1976 case NodeTypeSymbol:1960 case NodeTypeSymbol:
1977 return gen_symbol(g, node);1961 return gen_symbol(g, node);
1978 case NodeTypeBlock:1962 case NodeTypeBlock:
...@@ -2000,9 +1984,13 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {...@@ -2000,9 +1984,13 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {
2000 return gen_container_init_expr(g, node);1984 return gen_container_init_expr(g, node);
2001 case NodeTypeSwitchExpr:1985 case NodeTypeSwitchExpr:
2002 return gen_switch_expr(g, node);1986 return gen_switch_expr(g, node);
1987 case NodeTypeErrorLiteral:
2003 case NodeTypeNumberLiteral:1988 case NodeTypeNumberLiteral:
2004 case NodeTypeBoolLiteral:1989 case NodeTypeBoolLiteral:
2005 case NodeTypeStringLiteral:1990 case NodeTypeStringLiteral:
1991 case NodeTypeCharLiteral:
1992 case NodeTypeNullLiteral:
1993 case NodeTypeUndefinedLiteral:
2006 // caught by constant expression eval codegen1994 // caught by constant expression eval codegen
2007 zig_unreachable();1995 zig_unreachable();
2008 case NodeTypeRoot:1996 case NodeTypeRoot:
std/rand.zig+3-3
...@@ -1,16 +1,16 @@...@@ -1,16 +1,16 @@
1// Mersenne Twister1// Mersenne Twister
2const ARRAY_SIZE : i16 = 624;2const ARRAY_SIZE = 624;
33
4/// Use `rand_init` to initialize this state.4/// Use `rand_init` to initialize this state.
5pub struct Rand {5pub struct Rand {
6 array: [ARRAY_SIZE]u32,6 array: [ARRAY_SIZE]u32,
7 index: @typeof(ARRAY_SIZE),7 index: isize,
88
9 /// Initialize random state with the given seed.9 /// Initialize random state with the given seed.
10 pub fn init(r: &Rand, seed: u32) => {10 pub fn init(r: &Rand, seed: u32) => {
11 r.index = 0;11 r.index = 0;
12 r.array[0] = seed;12 r.array[0] = seed;
13 var i : @typeof(ARRAY_SIZE) = 1;13 var i : isize = 1;
14 var prev_value: u64 = seed;14 var prev_value: u64 = seed;
15 while (i < ARRAY_SIZE) {15 while (i < ARRAY_SIZE) {
16 r.array[i] = u32((prev_value ^ (prev_value << 30)) * 0x6c078965 + u32(i));16 r.array[i] = u32((prev_value ^ (prev_value << 30)) * 0x6c078965 + u32(i));
std/std.zig+5-5
...@@ -1,9 +1,9 @@...@@ -1,9 +1,9 @@
1import "syscall.zig";1import "syscall.zig";
2import "errno.zig";2import "errno.zig";
33
4pub const stdin_fileno : isize = 0;4pub const stdin_fileno = 0;
5pub const stdout_fileno : isize = 1;5pub const stdout_fileno = 1;
6pub const stderr_fileno : isize = 2;6pub const stderr_fileno = 2;
77
8/*8/*
9pub var stdin = InStream {9pub var stdin = InStream {
...@@ -34,8 +34,8 @@ pub %.BadPerm;...@@ -34,8 +34,8 @@ pub %.BadPerm;
34pub %.PipeFail;34pub %.PipeFail;
35*/35*/
3636
37//const buffer_size = 4 * 1024;37const buffer_size = 4 * 1024;
38const max_u64_base10_digits: isize = 20;38const max_u64_base10_digits = 20;
3939
40/*40/*
41pub struct OutStream {41pub struct OutStream {