* Created a branded type for escaped strings Then flowed it throughout the compiler, finding and fixing a handful of bugs relating to underscore-prefixed identifiers in the process. Includes a test for two cases noticed - diagnostics from conflicting symbols from export *'s, and enum with underscore prefixed member emit. * Correctly double underscores WRT mapped types * Add fourslash tests for other fixed issues * use function call over cast * Update forEachEntry type accuracy * Just use escaped names for ActiveLabel * Remove casts from getPropertyNameForPropertyNameNode * This pattern has occurred a few times, could use a helper function. * Remove duplicated helper * Remove unneeded check, use helper * Identifiers list is no longer escaped strings * Extract repeated string-getting code into helper * Rename type and associated functions * Make getName() return UnderscoreEscapedString, add getUnescapedName() * Add list of internal symbol names to escaped string type to cut back on casting * Remove outdated comments * Reassign interned values to nodes, just in case * Swap to string enum * Add deprecated aliases to escapeIdentifier and unescapeIdentifier * Add temp var * Remove unsafe casts * Rename escaped string type as per @sandersn's suggestion, fix string enum usages * Reorganize double underscore tests * Remove jfreeman from TODO * Remove unneeded parenthesis
19 lines
332 B
TypeScript
19 lines
332 B
TypeScript
enum Foo {
|
|
"__a" = 1,
|
|
"(Anonymous function)" = 2,
|
|
"(Anonymous class)" = 4,
|
|
"__call" = 10
|
|
}
|
|
namespace Foo {
|
|
export function ___call(): number {
|
|
return 5;
|
|
}
|
|
}
|
|
function Bar() {
|
|
return "no";
|
|
}
|
|
namespace Bar {
|
|
export function __call(x: number): number {
|
|
return 5;
|
|
}
|
|
} |