mirror of
https://github.com/godotengine/godot
synced 2024-09-15 21:49:59 +00:00
Fix interpolated strings in ScriptPropertyDefVal
This commit is contained in:
parent
df78c0636d
commit
42233284b1
|
@ -0,0 +1,26 @@
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Godot.SourceGenerators.Sample
|
||||||
|
{
|
||||||
|
public partial class ExportedComplexStrings : Node
|
||||||
|
{
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated1 = $"The quick brown fox jumps over ({Engine.GetVersionInfo()})";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated2 = $"The quick brown fox jumps over ({Engine.GetVersionInfo()["major"],0:G}) the lazy dog.";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated3 = $"{((int)Engine.GetVersionInfo()["major"]) * -1 * -1:G} the lazy dog.";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated4 = $"{":::fff,,}<,<}},,}]"}";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public string PropertyInterpolated1
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
} = $"The quick brown fox jumps over {GD.VarToStr($"the lazy {Engine.GetVersionInfo()} do")}g.";
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,4 +21,13 @@ public class ScriptPropertyDefValGeneratorTests
|
||||||
"ExportedProperties_ScriptPropertyDefVal.generated.cs"
|
"ExportedProperties_ScriptPropertyDefVal.generated.cs"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async void ExportedComplexStrings()
|
||||||
|
{
|
||||||
|
await CSharpSourceGeneratorVerifier<ScriptPropertyDefValGenerator>.Verify(
|
||||||
|
"ExportedComplexStrings.cs",
|
||||||
|
"ExportedComplexStrings_ScriptPropertyDefVal.generated.cs"
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
partial class ExportedComplexStrings
|
||||||
|
{
|
||||||
|
#pragma warning disable CS0109 // Disable warning about redundant 'new' keyword
|
||||||
|
#if TOOLS
|
||||||
|
/// <summary>
|
||||||
|
/// Get the default values for all properties declared in this class.
|
||||||
|
/// This method is used by Godot to determine the value that will be
|
||||||
|
/// used by the inspector when resetting properties.
|
||||||
|
/// Do not call this method.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
internal new static global::System.Collections.Generic.Dictionary<global::Godot.StringName, global::Godot.Variant> GetGodotPropertyDefaultValues()
|
||||||
|
{
|
||||||
|
var values = new global::System.Collections.Generic.Dictionary<global::Godot.StringName, global::Godot.Variant>(5);
|
||||||
|
string __PropertyInterpolated1_default_value = $"The quick brown fox jumps over {(global::Godot.GD.VarToStr($"the lazy {(global::Godot.Engine.GetVersionInfo())} do"))}g.";
|
||||||
|
values.Add(PropertyName.PropertyInterpolated1, global::Godot.Variant.From<string>(__PropertyInterpolated1_default_value));
|
||||||
|
string ___fieldInterpolated1_default_value = $"The quick brown fox jumps over ({(global::Godot.Engine.GetVersionInfo())})";
|
||||||
|
values.Add(PropertyName._fieldInterpolated1, global::Godot.Variant.From<string>(___fieldInterpolated1_default_value));
|
||||||
|
string ___fieldInterpolated2_default_value = $"The quick brown fox jumps over ({(global::Godot.Engine.GetVersionInfo()["major"]),0:G}) the lazy dog.";
|
||||||
|
values.Add(PropertyName._fieldInterpolated2, global::Godot.Variant.From<string>(___fieldInterpolated2_default_value));
|
||||||
|
string ___fieldInterpolated3_default_value = $"{(((int)global::Godot.Engine.GetVersionInfo()["major"]) * -1 * -1):G} the lazy dog.";
|
||||||
|
values.Add(PropertyName._fieldInterpolated3, global::Godot.Variant.From<string>(___fieldInterpolated3_default_value));
|
||||||
|
string ___fieldInterpolated4_default_value = $"{(":::fff,,}<,<}},,}]")}";
|
||||||
|
values.Add(PropertyName._fieldInterpolated4, global::Godot.Variant.From<string>(___fieldInterpolated4_default_value));
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
#endif // TOOLS
|
||||||
|
#pragma warning restore CS0109
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
public partial class ExportedComplexStrings : Node
|
||||||
|
{
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated1 = $"The quick brown fox jumps over ({Engine.GetVersionInfo()})";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated2 = $"The quick brown fox jumps over ({Engine.GetVersionInfo()["major"],0:G}) the lazy dog.";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated3 = $"{((int)Engine.GetVersionInfo()["major"]) * -1 * -1:G} the lazy dog.";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
private string _fieldInterpolated4 = $"{":::fff,,}<,<}},,}]"}";
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public string PropertyInterpolated1
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
} = $"The quick brown fox jumps over {GD.VarToStr($"the lazy {Engine.GetVersionInfo()} do")}g.";
|
||||||
|
}
|
|
@ -208,7 +208,17 @@ namespace Godot.SourceGenerators
|
||||||
|
|
||||||
if (child.IsNode)
|
if (child.IsNode)
|
||||||
{
|
{
|
||||||
FullQualifiedSyntax(child.AsNode()!, sm, sb, isFirstNode: innerIsFirstNode);
|
var childNode = child.AsNode()!;
|
||||||
|
|
||||||
|
if (node is InterpolationSyntax && childNode is ExpressionSyntax)
|
||||||
|
{
|
||||||
|
ParenEnclosedFullQualifiedSyntax(childNode, sm, sb, isFirstNode: innerIsFirstNode);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FullQualifiedSyntax(childNode, sm, sb, isFirstNode: innerIsFirstNode);
|
||||||
|
}
|
||||||
|
|
||||||
innerIsFirstNode = false;
|
innerIsFirstNode = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -221,6 +231,13 @@ namespace Godot.SourceGenerators
|
||||||
sb.Append(child.GetTrailingTrivia());
|
sb.Append(child.GetTrailingTrivia());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ParenEnclosedFullQualifiedSyntax(SyntaxNode node, SemanticModel sm, StringBuilder sb, bool isFirstNode)
|
||||||
|
{
|
||||||
|
sb.Append(SyntaxFactory.Token(SyntaxKind.OpenParenToken));
|
||||||
|
FullQualifiedSyntax(node, sm, sb, isFirstNode);
|
||||||
|
sb.Append(SyntaxFactory.Token(SyntaxKind.CloseParenToken));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string SanitizeQualifiedNameForUniqueHint(this string qualifiedName)
|
public static string SanitizeQualifiedNameForUniqueHint(this string qualifiedName)
|
||||||
|
|
Loading…
Reference in a new issue