mirror of
https://github.com/luau-lang/luau.git
synced 2025-05-04 10:33:46 +01:00
Improve table stringifier when line breaks enabled
This commit is contained in:
parent
f2191b9e4d
commit
6ac53f5f39
2 changed files with 51 additions and 8 deletions
|
@ -594,22 +594,22 @@ struct TypeVarStringifier
|
||||||
{
|
{
|
||||||
case TableState::Sealed:
|
case TableState::Sealed:
|
||||||
state.result.invalid = true;
|
state.result.invalid = true;
|
||||||
openbrace = "{| ";
|
openbrace = "{|";
|
||||||
closedbrace = " |}";
|
closedbrace = "|}";
|
||||||
break;
|
break;
|
||||||
case TableState::Unsealed:
|
case TableState::Unsealed:
|
||||||
openbrace = "{ ";
|
openbrace = "{";
|
||||||
closedbrace = " }";
|
closedbrace = "}";
|
||||||
break;
|
break;
|
||||||
case TableState::Free:
|
case TableState::Free:
|
||||||
state.result.invalid = true;
|
state.result.invalid = true;
|
||||||
openbrace = "{- ";
|
openbrace = "{-";
|
||||||
closedbrace = " -}";
|
closedbrace = "-}";
|
||||||
break;
|
break;
|
||||||
case TableState::Generic:
|
case TableState::Generic:
|
||||||
state.result.invalid = true;
|
state.result.invalid = true;
|
||||||
openbrace = "{+ ";
|
openbrace = "{+";
|
||||||
closedbrace = " +}";
|
closedbrace = "+}";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -628,6 +628,7 @@ struct TypeVarStringifier
|
||||||
bool comma = false;
|
bool comma = false;
|
||||||
if (ttv.indexer)
|
if (ttv.indexer)
|
||||||
{
|
{
|
||||||
|
state.newline();
|
||||||
state.emit("[");
|
state.emit("[");
|
||||||
stringify(ttv.indexer->indexType);
|
stringify(ttv.indexer->indexType);
|
||||||
state.emit("]: ");
|
state.emit("]: ");
|
||||||
|
@ -644,6 +645,10 @@ struct TypeVarStringifier
|
||||||
state.emit(",");
|
state.emit(",");
|
||||||
state.newline();
|
state.newline();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
state.newline();
|
||||||
|
}
|
||||||
|
|
||||||
size_t length = state.result.name.length() - oldLength;
|
size_t length = state.result.name.length() - oldLength;
|
||||||
|
|
||||||
|
@ -670,6 +675,10 @@ struct TypeVarStringifier
|
||||||
}
|
}
|
||||||
|
|
||||||
state.dedent();
|
state.dedent();
|
||||||
|
if (comma)
|
||||||
|
state.newline();
|
||||||
|
else
|
||||||
|
state.emit(" ");
|
||||||
state.emit(closedbrace);
|
state.emit(closedbrace);
|
||||||
|
|
||||||
state.unsee(&ttv);
|
state.unsee(&ttv);
|
||||||
|
|
|
@ -60,6 +60,40 @@ TEST_CASE_FIXTURE(Fixture, "named_table")
|
||||||
CHECK_EQ("TheTable", toString(&table));
|
CHECK_EQ("TheTable", toString(&table));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE_FIXTURE(Fixture, "empty_table")
|
||||||
|
{
|
||||||
|
CheckResult result = check(R"(
|
||||||
|
local a: {}
|
||||||
|
)");
|
||||||
|
|
||||||
|
CHECK_EQ("{| |}", toString(requireType("a")));
|
||||||
|
|
||||||
|
// Should stay the same with useLineBreaks enabled
|
||||||
|
ToStringOptions opts;
|
||||||
|
opts.useLineBreaks = true;
|
||||||
|
CHECK_EQ("{| |}", toString(requireType("a"), opts));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_FIXTURE(Fixture, "table_respects_use_line_break")
|
||||||
|
{
|
||||||
|
CheckResult result = check(R"(
|
||||||
|
local a: { prop: string, anotherProp: number, thirdProp: boolean }
|
||||||
|
)");
|
||||||
|
|
||||||
|
ToStringOptions opts;
|
||||||
|
opts.useLineBreaks = true;
|
||||||
|
opts.indent = true;
|
||||||
|
|
||||||
|
//clang-format off
|
||||||
|
CHECK_EQ("{|\n"
|
||||||
|
" anotherProp: number,\n"
|
||||||
|
" prop: string,\n"
|
||||||
|
" thirdProp: boolean\n"
|
||||||
|
"|}",
|
||||||
|
toString(requireType("a"), opts));
|
||||||
|
//clang-format on
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE_FIXTURE(BuiltinsFixture, "exhaustive_toString_of_cyclic_table")
|
TEST_CASE_FIXTURE(BuiltinsFixture, "exhaustive_toString_of_cyclic_table")
|
||||||
{
|
{
|
||||||
CheckResult result = check(R"(
|
CheckResult result = check(R"(
|
||||||
|
|
Loading…
Add table
Reference in a new issue