Fix Value.boolValue
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user