From b2f5242731995ca9a082399c807022b2933687ca Mon Sep 17 00:00:00 2001 From: otya128 Date: Sat, 31 Dec 2016 10:22:24 +0900 Subject: [PATCH] Fix Value.boolValue --- SMILEBASIC/VM.d | 24 ++---------------------- SMILEBASIC/type.d | 6 +++--- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/SMILEBASIC/VM.d b/SMILEBASIC/VM.d index c6642df..ba67ae6 100644 --- a/SMILEBASIC/VM.d +++ b/SMILEBASIC/VM.d @@ -825,12 +825,6 @@ class Operate : Code case TokenType.Or: vm.push(Value(li | ri)); return; - case TokenType.LogicalAnd: - vm.push(Value(li && ri)); - return; - case TokenType.LogicalOr: - vm.push(Value(li || ri)); - return; case TokenType.Xor: vm.push(Value(li ^ ri)); return; @@ -902,12 +896,6 @@ class Operate : Code case TokenType.Or: vm.push(Value(li | ri)); return; - case TokenType.LogicalAnd: - vm.push(Value(li && ri)); - return; - case TokenType.LogicalOr: - vm.push(Value(li || ri)); - return; case TokenType.Xor: vm.push(Value(li ^ ri)); return; @@ -2619,15 +2607,7 @@ class ConvertBool : Code throw new StackUnderFlow(); } auto top = &vm.stack[vm.stacki - 1]; - if (top.type == ValueType.String) - { - top.type = ValueType.Integer; - top.integerValue = 3; - } - else if (top.isNumber) - { - top.type = ValueType.Integer; - top.integerValue = top.boolValue; - } + top.integerValue = top.boolValue; + top.type = ValueType.Integer; } } diff --git a/SMILEBASIC/type.d b/SMILEBASIC/type.d index b0abd87..fe2550f 100644 --- a/SMILEBASIC/type.d +++ b/SMILEBASIC/type.d @@ -147,7 +147,7 @@ struct Value break; } } - bool boolValue() + int boolValue() { switch(type) { @@ -156,10 +156,10 @@ struct Value case ValueType.Integer: return this.integerValue != 0; case ValueType.String: - return true;//3.1現在では文字列はtrue(ただし!"A"などは動かない) + return 3;//3.1現在では文字列はtrue(ただし!"A"などは動かない) default: //配列はtype mismatch - return false; + throw new TypeMismatch(); } } bool isArray()