Merge remote-tracking branch 'gzdoom/master' into asmjit
This commit is contained in:
commit
eb9d2b54f3
67 changed files with 401 additions and 391 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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. */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue