Merge remote-tracking branch 'gzdoom/master' into asmjit

This commit is contained in:
Magnus Norddahl 2018-08-23 18:20:23 +02:00
commit eb9d2b54f3
67 changed files with 401 additions and 391 deletions

View file

@ -2480,6 +2480,12 @@ FxExpression *FxAssign::Resolve(FCompileContext &ctx)
delete this;
return nullptr;
}
else if (Base->IsDynamicArray())
{
ScriptPosition.Message(MSG_ERROR, "Cannot assign dynamic arrays, use Copy() or Move() function instead");
delete this;
return nullptr;
}
if (!Base->IsVector() && Base->ValueType->isStruct())
{
ScriptPosition.Message(MSG_ERROR, "Struct assignment not implemented yet");
@ -9330,10 +9336,8 @@ ExpEmit FxFlopFunctionCall::Emit(VMFunctionBuilder *build)
//==========================================================================
FxVectorBuiltin::FxVectorBuiltin(FxExpression *self, FName name)
:FxExpression(EFX_VectorBuiltin, self->ScriptPosition)
:FxExpression(EFX_VectorBuiltin, self->ScriptPosition), Function(name), Self(self)
{
Self = self;
Function = name;
}
FxVectorBuiltin::~FxVectorBuiltin()
@ -11130,7 +11134,7 @@ ExpEmit FxRuntimeStateIndex::Emit(VMFunctionBuilder *build)
FxMultiNameState::FxMultiNameState(const char *_statestring, const FScriptPosition &pos, PClassActor *checkclass)
:FxExpression(EFX_MultiNameState, pos)
{
FName scopename;
FName scopename = NAME_None;
FString statestring = _statestring;
int scopeindex = statestring.IndexOf("::");
@ -11139,10 +11143,6 @@ FxMultiNameState::FxMultiNameState(const char *_statestring, const FScriptPositi
scopename = FName(statestring, scopeindex, false);
statestring = statestring.Right(statestring.Len() - scopeindex - 2);
}
else
{
scopename = NAME_None;
}
names = MakeStateNameList(statestring);
names.Insert(0, scopename);
scope = checkclass;

View file

@ -369,7 +369,7 @@ public:
class FxIdentifier : public FxExpression
{
public:
FName Identifier;
FName Identifier = NAME_None;
bool noglobal = false;
FxIdentifier(FName i, const FScriptPosition &p);

View file

@ -101,12 +101,11 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def, PNamespace *ns)
FExtraInfo extra;
PClassActor *type;
PClassActor *parent;
FName typeName;
parent = (def == DEF_Pickup) ? PClass::FindActor("FakeInventory") : RUNTIME_CLASS(AActor);
sc.MustGetString();
typeName = FName(sc.String);
FName typeName = FName(sc.String);
type = DecoDerivedClass(FScriptPosition(sc), parent, typeName);
ResetBaggage(&bag, parent);
bag.Namespace = ns;

View file

@ -421,7 +421,7 @@ static FxExpression *ParseExpression0 (FScanner &sc, PClassActor *cls)
}
else if (sc.CheckToken(TK_NameConst))
{
return new FxConstant(sc.Name, scpos);
return new FxConstant(FName(sc.String), scpos);
}
else if (sc.CheckToken(TK_StringConst))
{

View file

@ -1029,9 +1029,7 @@ PClassActor *CreateNewActor(const FScriptPosition &sc, FName typeName, FName par
//==========================================================================
static PClassActor *ParseActorHeader(FScanner &sc, Baggage *bag)
{
FName typeName;
FName parentName;
FName replaceName;
FName replaceName = NAME_None;
bool native = false;
int DoomEdNum = -1;
@ -1044,7 +1042,7 @@ static PClassActor *ParseActorHeader(FScanner &sc, Baggage *bag)
*colon++ = 0;
}
typeName = sc.String;
FName typeName = sc.String;
// Do some tweaking so that a definition like 'Actor:Parent' which is read as a single token is recognized as well
// without having resort to C-mode (which disallows periods in actor names.)
@ -1071,7 +1069,7 @@ static PClassActor *ParseActorHeader(FScanner &sc, Baggage *bag)
sc.UnGet();
}
parentName = colon;
FName parentName = colon;
// Check for "replaces"
if (sc.CheckString ("replaces"))

View file

@ -318,6 +318,7 @@ static FFlagDef ActorFlagDefs[]=
DEFINE_FLAG(MF8, FRIGHTENING, AActor, flags8),
DEFINE_FLAG(MF8, BLOCKASPLAYER, AActor, flags8),
DEFINE_FLAG(MF8, DONTFACETALKER, AActor, flags8),
DEFINE_FLAG(MF8, HITOWNER, AActor, flags8),
// Effect flags
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),

View file

@ -569,9 +569,8 @@ DEFINE_PROPERTY(painchance, ZI, Actor)
}
else
{
FName painType;
if (!stricmp(str, "Normal")) painType = NAME_None;
else painType=str;
FName painType = NAME_None;
if (stricmp(str, "Normal")) painType = str;
info->SetPainChance(painType, id);
}
@ -897,15 +896,14 @@ DEFINE_PROPERTY(damagefactor, ZF, Actor)
PROP_STRING_PARM(str, 0);
PROP_DOUBLE_PARM(id, 1);
if (str == NULL)
if (str == nullptr)
{
defaults->DamageFactor = id;
}
else
{
FName dmgType;
if (!stricmp(str, "Normal")) dmgType = NAME_None;
else dmgType=str;
FName dmgType = NAME_None;
if (stricmp(str, "Normal")) dmgType = str;
info->SetDamageFactor(dmgType, id);
}

View file

@ -1593,10 +1593,8 @@ PClassPointer *NewClassPointer(PClass *restrict)
//==========================================================================
PEnum::PEnum(FName name, PTypeBase *outer)
: PInt(4, false)
: PInt(4, false), Outer(outer), EnumName(name)
{
EnumName = name;
Outer = outer;
Flags |= TYPE_IntNotInt;
mDescriptiveName.Format("Enum<%s>", name.GetChars());
}

View file

@ -238,10 +238,10 @@ protected:
class PContainerType : public PCompoundType
{
public:
PTypeBase *Outer; // object this type is contained within
FName TypeName; // this type's name
PTypeBase *Outer = nullptr; // object this type is contained within
FName TypeName = NAME_None; // this type's name
PContainerType() : Outer(NULL)
PContainerType()
{
mDescriptiveName = "ContainerType";
Flags |= TYPE_Container;

View file

@ -390,6 +390,7 @@ struct_body(X) ::= struct_body(A) struct_member(B). { X = A; /*X-overwrites-A*/
struct_member(X) ::= declarator(A). { X = A; /*X-overwrites-A*/ }
struct_member(X) ::= enum_def(A). { X = A; /*X-overwrites-A*/ }
struct_member(X) ::= const_def(A). { X = A; /*X-overwrites-A*/ }
struct_member(X) ::= staticarray_statement(A). { X = A; /*X-overwrites-A*/ }
/*----- Constant Definition ------*/
/* Like UnrealScript, a constant's type is implied by its value's type. */

View file

@ -274,7 +274,7 @@ static void ParseSingleFile(FScanner *pSC, const char *filename, int lump, void
break;
case TK_NameConst:
value.Int = sc.Name;
value.Int = FName(sc.String).GetIndex();
tokentype = ZCC_NAMECONST;
break;