From 1705ba806905bfbfd2352767ad95a0d1c0376090 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 28 Jul 2018 19:44:00 +0100 Subject: [PATCH] Fix typos --- src/big_int.cpp | 6 +++--- src/check_expr.cpp | 2 +- src/exact_value.cpp | 2 +- src/types.cpp | 15 ++++++++++++--- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/big_int.cpp b/src/big_int.cpp index fada34115..9e18fb783 100644 --- a/src/big_int.cpp +++ b/src/big_int.cpp @@ -96,7 +96,7 @@ void big_int_and (BigInt *dst, BigInt const *x, BigInt const *y); void big_int_and_not(BigInt *dst, BigInt const *x, BigInt const *y); void big_int_xor (BigInt *dst, BigInt const *x, BigInt const *y); void big_int_or (BigInt *dst, BigInt const *x, BigInt const *y); -void big_int_not (BigInt *dst, BigInt const *x); +void big_int_not (BigInt *dst, BigInt const *x, u64 bit_count, bool is_signed); void big_int_add_eq(BigInt *dst, BigInt const *x); @@ -1230,7 +1230,7 @@ void big_int_or(BigInt *dst, BigInt const *x, BigInt const *y) { if (x->neg == y->neg) { if (x->neg) { - // (-x) || (-y) == ~(x-1) | ~(y-1) == ~((x-1) & (y-1)) == -(((x-1) & (y-1)) + 1) + // (-x) | (-y) == ~(x-1) | ~(y-1) == ~((x-1) & (y-1)) == -(((x-1) & (y-1)) + 1) BigInt x1 = big_int_make_abs(x); BigInt y1 = big_int_make_abs(y); big_int_sub_eq(&x1, &BIG_INT_ONE); @@ -1285,7 +1285,7 @@ void big_int_or(BigInt *dst, BigInt const *x, BigInt const *y) { } -void bit_int_not(BigInt *dst, BigInt const *x, u64 bit_count, bool is_signed) { +void big_int_not(BigInt *dst, BigInt const *x, u64 bit_count, bool is_signed) { if (bit_count == 0) { big_int_from_u64(dst, 0); return; diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 42c9e57bc..c1b2be3b8 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -2758,8 +2758,8 @@ Entity *check_selector(CheckerContext *c, Operand *operand, Ast *node, Type *typ return entity; } + bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 id) { - GB_ASSERT(call->kind == Ast_CallExpr); ast_node(ce, CallExpr, call); BuiltinProc *bp = &builtin_procs[id]; { diff --git a/src/exact_value.cpp b/src/exact_value.cpp index e339e876b..8027b1038 100644 --- a/src/exact_value.cpp +++ b/src/exact_value.cpp @@ -402,7 +402,7 @@ ExactValue exact_unary_operator_value(TokenKind op, ExactValue v, i32 precision, case ExactValue_Integer: { GB_ASSERT(precision != 0); ExactValue i = {ExactValue_Integer}; - bit_int_not(&i.value_integer, &v.value_integer, precision, !is_unsigned); + big_int_not(&i.value_integer, &v.value_integer, precision, !is_unsigned); return i; } default: diff --git a/src/types.cpp b/src/types.cpp index 2541094e8..46ce0ee26 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -67,9 +67,10 @@ enum BasicFlag { BasicFlag_LLVM = GB_BIT(10), - BasicFlag_Numeric = BasicFlag_Integer | BasicFlag_Float | BasicFlag_Complex, - BasicFlag_Ordered = BasicFlag_Integer | BasicFlag_Float | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, - BasicFlag_ConstantType = BasicFlag_Boolean | BasicFlag_Numeric | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, + BasicFlag_Numeric = BasicFlag_Integer | BasicFlag_Float | BasicFlag_Complex, + BasicFlag_Ordered = BasicFlag_Integer | BasicFlag_Float | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, + BasicFlag_OrderedNumeric = BasicFlag_Integer | BasicFlag_Float | BasicFlag_Rune, + BasicFlag_ConstantType = BasicFlag_Boolean | BasicFlag_Numeric | BasicFlag_String | BasicFlag_Pointer | BasicFlag_Rune, }; struct BasicType { @@ -736,6 +737,14 @@ bool is_type_ordered(Type *t) { } return false; } +bool is_type_ordered_numeric(Type *t) { + t = core_type(t); + switch (t->kind) { + case Type_Basic: + return (t->Basic.flags & BasicFlag_OrderedNumeric) != 0; + } + return false; +} bool is_type_constant_type(Type *t) { t = core_type(t); if (t->kind == Type_Basic) {