Skip to content

Commit 186b4e6

Browse files
committed
Switch vector library type definition based on flags without string manipulation
1 parent e8e84a7 commit 186b4e6

File tree

1 file changed

+66
-18
lines changed

1 file changed

+66
-18
lines changed

Analysis/src/EmbeddedBuiltinDefinitions.cpp

Lines changed: 66 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ declare buffer: {
454454
455455
)BUILTIN_SRC";
456456

457-
static const std::string kBuiltinDefinitionVectorSrc_DEPRECATED = R"BUILTIN_SRC(
457+
static const std::string kBuiltinDefinitionVectorSrc_NoExtra_NoVector2Ctor_DEPRECATED = R"BUILTIN_SRC(
458458
459459
-- TODO: this will be replaced with a built-in primitive type
460460
declare class vector end
@@ -480,7 +480,33 @@ declare vector: {
480480
481481
)BUILTIN_SRC";
482482

483-
static const std::string kBuiltinDefinitionVectorSrc = R"BUILTIN_SRC(
483+
static const std::string kBuiltinDefinitionVectorSrc_NoExtra_DEPRECATED = R"BUILTIN_SRC(
484+
485+
-- TODO: this will be replaced with a built-in primitive type
486+
declare class vector end
487+
488+
declare vector: {
489+
create: @checked (x: number, y: number, z: number?) -> vector,
490+
magnitude: @checked (vec: vector) -> number,
491+
normalize: @checked (vec: vector) -> vector,
492+
cross: @checked (vec1: vector, vec2: vector) -> vector,
493+
dot: @checked (vec1: vector, vec2: vector) -> number,
494+
angle: @checked (vec1: vector, vec2: vector, axis: vector?) -> number,
495+
floor: @checked (vec: vector) -> vector,
496+
ceil: @checked (vec: vector) -> vector,
497+
abs: @checked (vec: vector) -> vector,
498+
sign: @checked (vec: vector) -> vector,
499+
clamp: @checked (vec: vector, min: vector, max: vector) -> vector,
500+
max: @checked (vector, ...vector) -> vector,
501+
min: @checked (vector, ...vector) -> vector,
502+
503+
zero: vector,
504+
one: vector,
505+
}
506+
507+
)BUILTIN_SRC";
508+
509+
static const std::string kBuiltinDefinitionVectorSrc_NoVector2Ctor_DEPRECATED = R"BUILTIN_SRC(
484510
485511
-- While vector would have been better represented as a built-in primitive type, type solver class handling covers most of the properties
486512
declare class vector
@@ -510,26 +536,48 @@ declare vector: {
510536
511537
)BUILTIN_SRC";
512538

539+
static const std::string kBuiltinDefinitionVectorSrc = R"BUILTIN_SRC(
540+
541+
-- While vector would have been better represented as a built-in primitive type, type solver class handling covers most of the properties
542+
declare class vector
543+
x: number
544+
y: number
545+
z: number
546+
end
547+
548+
declare vector: {
549+
create: @checked (x: number, y: number, z: number?) -> vector,
550+
magnitude: @checked (vec: vector) -> number,
551+
normalize: @checked (vec: vector) -> vector,
552+
cross: @checked (vec1: vector, vec2: vector) -> vector,
553+
dot: @checked (vec1: vector, vec2: vector) -> number,
554+
angle: @checked (vec1: vector, vec2: vector, axis: vector?) -> number,
555+
floor: @checked (vec: vector) -> vector,
556+
ceil: @checked (vec: vector) -> vector,
557+
abs: @checked (vec: vector) -> vector,
558+
sign: @checked (vec: vector) -> vector,
559+
clamp: @checked (vec: vector, min: vector, max: vector) -> vector,
560+
max: @checked (vector, ...vector) -> vector,
561+
min: @checked (vector, ...vector) -> vector,
562+
563+
zero: vector,
564+
one: vector,
565+
}
566+
567+
)BUILTIN_SRC";
568+
513569
std::string getBuiltinDefinitionSource()
514570
{
515571
std::string result = FFlag::LuauMathMap ? kBuiltinDefinitionLuaSrcChecked : kBuiltinDefinitionLuaSrcChecked_DEPRECATED;
516572

517-
std::string vectorSrc;
518-
if (FFlag::LuauVectorDefinitionsExtra)
519-
vectorSrc = kBuiltinDefinitionVectorSrc;
520-
else if (FFlag::LuauVectorDefinitions)
521-
vectorSrc = kBuiltinDefinitionVectorSrc_DEPRECATED;
522-
523-
if (FFlag::LuauVector2Constructor && !vectorSrc.empty())
524-
{
525-
std::string what = "create: @checked (x: number, y: number, z: number) -> vector";
526-
std::string replacement = "create: @checked (x: number, y: number, z: number?) -> vector";
527-
std::string::size_type pos = vectorSrc.find(what);
528-
LUAU_ASSERT(pos != std::string::npos);
529-
vectorSrc.replace(pos, what.size(), replacement);
530-
}
531-
532-
result += vectorSrc;
573+
if (FFlag::LuauVectorDefinitionsExtra && FFlag::LuauVector2Constructor)
574+
result += kBuiltinDefinitionVectorSrc;
575+
else if (FFlag::LuauVectorDefinitionsExtra && !FFlag::LuauVector2Constructor)
576+
result += kBuiltinDefinitionVectorSrc_NoVector2Ctor_DEPRECATED;
577+
else if (FFlag::LuauVectorDefinitions && FFlag::LuauVector2Constructor)
578+
result += kBuiltinDefinitionVectorSrc_NoExtra_DEPRECATED;
579+
else if (FFlag::LuauVectorDefinitions && !FFlag::LuauVector2Constructor)
580+
result += kBuiltinDefinitionVectorSrc_NoExtra_NoVector2Ctor_DEPRECATED;
533581

534582
return result;
535583
}

0 commit comments

Comments
 (0)