Fix Value.boolValue
This commit is contained in:
@@ -825,12 +825,6 @@ class Operate : Code
|
|||||||
case TokenType.Or:
|
case TokenType.Or:
|
||||||
vm.push(Value(li | ri));
|
vm.push(Value(li | ri));
|
||||||
return;
|
return;
|
||||||
case TokenType.LogicalAnd:
|
|
||||||
vm.push(Value(li && ri));
|
|
||||||
return;
|
|
||||||
case TokenType.LogicalOr:
|
|
||||||
vm.push(Value(li || ri));
|
|
||||||
return;
|
|
||||||
case TokenType.Xor:
|
case TokenType.Xor:
|
||||||
vm.push(Value(li ^ ri));
|
vm.push(Value(li ^ ri));
|
||||||
return;
|
return;
|
||||||
@@ -902,12 +896,6 @@ class Operate : Code
|
|||||||
case TokenType.Or:
|
case TokenType.Or:
|
||||||
vm.push(Value(li | ri));
|
vm.push(Value(li | ri));
|
||||||
return;
|
return;
|
||||||
case TokenType.LogicalAnd:
|
|
||||||
vm.push(Value(li && ri));
|
|
||||||
return;
|
|
||||||
case TokenType.LogicalOr:
|
|
||||||
vm.push(Value(li || ri));
|
|
||||||
return;
|
|
||||||
case TokenType.Xor:
|
case TokenType.Xor:
|
||||||
vm.push(Value(li ^ ri));
|
vm.push(Value(li ^ ri));
|
||||||
return;
|
return;
|
||||||
@@ -2619,15 +2607,7 @@ class ConvertBool : Code
|
|||||||
throw new StackUnderFlow();
|
throw new StackUnderFlow();
|
||||||
}
|
}
|
||||||
auto top = &vm.stack[vm.stacki - 1];
|
auto top = &vm.stack[vm.stacki - 1];
|
||||||
if (top.type == ValueType.String)
|
top.integerValue = top.boolValue;
|
||||||
{
|
top.type = ValueType.Integer;
|
||||||
top.type = ValueType.Integer;
|
|
||||||
top.integerValue = 3;
|
|
||||||
}
|
|
||||||
else if (top.isNumber)
|
|
||||||
{
|
|
||||||
top.type = ValueType.Integer;
|
|
||||||
top.integerValue = top.boolValue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ struct Value
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool boolValue()
|
int boolValue()
|
||||||
{
|
{
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
@@ -156,10 +156,10 @@ struct Value
|
|||||||
case ValueType.Integer:
|
case ValueType.Integer:
|
||||||
return this.integerValue != 0;
|
return this.integerValue != 0;
|
||||||
case ValueType.String:
|
case ValueType.String:
|
||||||
return true;//3.1現在では文字列はtrue(ただし!"A"などは動かない)
|
return 3;//3.1現在では文字列はtrue(ただし!"A"などは動かない)
|
||||||
default:
|
default:
|
||||||
//配列はtype mismatch
|
//配列はtype mismatch
|
||||||
return false;
|
throw new TypeMismatch();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool isArray()
|
bool isArray()
|
||||||
|
|||||||
Reference in New Issue
Block a user