diff --git a/core/strings/strings.odin b/core/strings/strings.odin index 603917698..fcfc133f3 100644 --- a/core/strings/strings.odin +++ b/core/strings/strings.odin @@ -1686,7 +1686,7 @@ centre_justify :: proc(str: string, length: int, pad: string, allocator := conte return clone(str, allocator) } - remains := length-1 + remains := length-n pad_len := rune_count(pad) b: Builder @@ -1702,14 +1702,14 @@ centre_justify :: proc(str: string, length: int, pad: string, allocator := conte return to_string(b) } -// left_justify returns a string with a pad string at left side if the str's rune length is smaller than length +// left_justify returns a string with a pad string at right side if the str's rune length is smaller than length left_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> string { n := rune_count(str) if n >= length || pad == "" { return clone(str, allocator) } - remains := length-1 + remains := length-n pad_len := rune_count(pad) b: Builder @@ -1724,14 +1724,14 @@ left_justify :: proc(str: string, length: int, pad: string, allocator := context return to_string(b) } -// right_justify returns a string with a pad string at right side if the str's rune length is smaller than length +// right_justify returns a string with a pad string at left side if the str's rune length is smaller than length right_justify :: proc(str: string, length: int, pad: string, allocator := context.allocator) -> string { n := rune_count(str) if n >= length || pad == "" { return clone(str, allocator) } - remains := length-1 + remains := length-n pad_len := rune_count(pad) b: Builder diff --git a/src/check_type.cpp b/src/check_type.cpp index da0a9706b..66417f97e 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -1643,8 +1643,10 @@ Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_params, bool *is bool valid = false; if (is_type_proc(op.type)) { Entity *proc_entity = entity_from_expr(op.expr); - valid = proc_entity != nullptr; - poly_const = exact_value_procedure(proc_entity->identifier.load() ? proc_entity->identifier.load() : op.expr); + valid = (proc_entity != nullptr) && (op.value.kind == ExactValue_Procedure); + if (valid) { + poly_const = exact_value_procedure(proc_entity->identifier.load() ? proc_entity->identifier.load() : op.expr); + } } if (!valid) { if (op.mode == Addressing_Constant) {