protected EV3Type CalculateCommonType(EV3Type type1, EV3Type type2) { if (type1.BaseType() == type2.BaseType()) { if (type1.IsArray()) { return(type1); } return(type2); } if (type1.BaseType().IsNumber() && type2.BaseType().IsNumber()) { return(EV3Type.Float); } if ((type1.BaseType().IsNumber() && type2.BaseType() == EV3Type.String) || (type1.BaseType() == EV3Type.String && type2.BaseType().IsNumber())) { return(EV3Type.String); } return(EV3Type.Unknown); }
protected string CompileWithConvert(TextWriter writer, IExpressionCompiler compiler, EV3Type resultType, EV3Variables.TempVariableCreator tempVariables) { string value = compiler.Compile(writer, tempVariables.CreateVariable(compiler.Type)); if (compiler.Type.BaseType().IsNumber() && resultType.BaseType() == EV3Type.String) { if (compiler.IsLiteral) { return("'" + SmallBasicExtensions.FormatFloat(value) + "'"); } else { IEV3Variable outputVariable = tempVariables.CreateVariable(EV3Type.String); writer.WriteLine($" STRINGS VALUE_FORMATTED {value} '%g' 99 {outputVariable.Ev3Name}"); return(outputVariable.Ev3Name); } } else { return(value); } }
public static bool IsArrayOf(this EV3Type type, EV3Type baseType) { return(type.IsArray() && type.BaseType() == baseType); }