Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitad5a4c7

Browse files
committed
add prependRange and move more variable declaration
1 parent030b8fc commitad5a4c7

File tree

307 files changed

+11385
-11307
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

307 files changed

+11385
-11307
lines changed

‎src/compiler/core.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,21 @@ namespace ts {
951951
returnto;
952952
}
953953

954+
/**
955+
* Appends a range of value to begin of an array, returning the array.
956+
*
957+
*@param to The array to which `value` is to be appended. If `to` is `undefined`, a new array
958+
* is created if `value` was appended.
959+
*@param from The values to append to the array. If `from` is `undefined`, nothing is
960+
* appended. If an element of `from` is `undefined`, that element is not appended.
961+
*/
962+
exportfunctionprependRange<T>(to:T[],from:ReadonlyArray<T>|undefined):T[]|undefined{
963+
if(from===undefined||from.length===0)returnto;
964+
if(to===undefined)returnfrom.slice();
965+
to.unshift(...from);
966+
returnto;
967+
}
968+
954969
/**
955970
*@return Whether the value was added.
956971
*/

‎src/compiler/transformers/es2015.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ namespace ts {
529529
createVariableStatement(/*modifiers*/undefined,
530530
createVariableDeclarationList(taggedTemplateStringDeclarations)));
531531
}
532-
addRange(statements,endLexicalEnvironment());
532+
prependRange(statements,endLexicalEnvironment());
533533
exitSubtree(ancestorFacts,HierarchyFacts.None,HierarchyFacts.None);
534534
returnupdateSourceFileNode(
535535
node,
@@ -836,7 +836,7 @@ namespace ts {
836836
setEmitFlags(statement,EmitFlags.NoComments|EmitFlags.NoTokenSourceMaps);
837837
statements.push(statement);
838838

839-
addRange(statements,endLexicalEnvironment());
839+
prependRange(statements,endLexicalEnvironment());
840840

841841
constblock=createBlock(setTextRange(createNodeArray(statements),/*location*/node.members),/*multiLine*/true);
842842
setEmitFlags(block,EmitFlags.NoComments);
@@ -979,7 +979,7 @@ namespace ts {
979979
);
980980
}
981981

982-
addRange(statements,endLexicalEnvironment());
982+
prependRange(statements,endLexicalEnvironment());
983983

984984
if(constructor){
985985
prependCaptureNewTargetIfNeeded(statements,constructor,/*copyOnWrite*/false);
@@ -1894,7 +1894,7 @@ namespace ts {
18941894
}
18951895

18961896
constlexicalEnvironment=context.endLexicalEnvironment();
1897-
addRange(statements,lexicalEnvironment);
1897+
prependRange(statements,lexicalEnvironment);
18981898

18991899
prependCaptureNewTargetIfNeeded(statements,node,/*copyOnWrite*/false);
19001900

@@ -2712,7 +2712,7 @@ namespace ts {
27122712
if(loopOutParameters.length){
27132713
copyOutParameters(loopOutParameters,CopyDirection.ToOutParameter,statements);
27142714
}
2715-
addRange(statements,lexicalEnvironment);
2715+
prependRange(statements,lexicalEnvironment);
27162716
loopBody=createBlock(statements,/*multiline*/true);
27172717
}
27182718

@@ -3309,10 +3309,12 @@ namespace ts {
33093309
// expression, but we will restore them later to preserve comments and source maps.
33103310
constbody=cast(cast(skipOuterExpressions(node.expression),isArrowFunction).body,isBlock);
33113311

3312-
// The class statements are the statements generated by visiting the first statement of the
3312+
// The class statements are the statements generated by visiting the first statementwith initializerof the
33133313
// body (1), while all other statements are added to remainingStatements (2)
3314-
constclassStatements=visitNodes(body.statements,visitor,isStatement,0,1);
3315-
constremainingStatements=visitNodes(body.statements,visitor,isStatement,1,body.statements.length-1);
3314+
constisVariableStatementWithInitializer=(stmt:Statement)=>isVariableStatement(stmt)&&!!firstOrUndefined(stmt.declarationList.declarations).initializer;
3315+
constbodyStatements=visitNodes(body.statements,visitor,isStatement);
3316+
constclassStatements=filter(bodyStatements,isVariableStatementWithInitializer);
3317+
constremainingStatements=filter(bodyStatements,stmt=>!isVariableStatementWithInitializer(stmt));
33163318
constvarStatement=cast(firstOrUndefined(classStatements),isVariableStatement);
33173319

33183320
// We know there is only one variable declaration here as we verified this in an
@@ -3324,6 +3326,7 @@ namespace ts {
33243326
// we see as an assignment, for example:
33253327
//
33263328
// (function () {
3329+
// var C_1;
33273330
// var C = C_1 = (function () {
33283331
// function C() {
33293332
// }
@@ -3332,7 +3335,6 @@ namespace ts {
33323335
// }());
33333336
// C = C_1 = __decorate([dec], C);
33343337
// return C;
3335-
// var C_1;
33363338
// }())
33373339
//
33383340
constaliasAssignment=tryCast(initializer,isAssignmentExpression);

‎src/compiler/transformers/es2017.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ namespace ts {
412412
)
413413
);
414414

415-
addRange(statements,endLexicalEnvironment());
415+
prependRange(statements,endLexicalEnvironment());
416416

417417
constblock=createBlock(statements,/*multiLine*/true);
418418
setTextRange(block,node.body);
@@ -443,7 +443,7 @@ namespace ts {
443443
constdeclarations=endLexicalEnvironment();
444444
if(some(declarations)){
445445
constblock=convertToFunctionBody(expression);
446-
result=updateBlock(block,setTextRange(createNodeArray(concatenate(block.statements,declarations)),block.statements));
446+
result=updateBlock(block,setTextRange(createNodeArray(concatenate(declarations,block.statements)),block.statements));
447447
}
448448
else{
449449
result=expression;

‎src/compiler/transformers/esnext.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ namespace ts {
645645
)
646646
);
647647

648-
addRange(statements,endLexicalEnvironment());
648+
prependRange(statements,endLexicalEnvironment());
649649
constblock=updateBlock(node.body,statements);
650650

651651
// Minor optimization, emit `_super` helper to capture `super` access in an arrow.
@@ -674,11 +674,11 @@ namespace ts {
674674
statementOffset=addPrologue(statements,body.statements,/*ensureUseStrict*/false,visitor);
675675
}
676676
addRange(statements,appendObjectRestAssignmentsIfNeeded(/*statements*/undefined,node));
677-
consttrailingStatements=endLexicalEnvironment();
678-
if(statementOffset>0||some(statements)||some(trailingStatements)){
677+
constleadingStatements=endLexicalEnvironment();
678+
if(statementOffset>0||some(statements)||some(leadingStatements)){
679679
constblock=convertToFunctionBody(body,/*multiLine*/true);
680+
prependRange(statements,leadingStatements);
680681
addRange(statements,block.statements.slice(statementOffset));
681-
addRange(statements,trailingStatements);
682682
returnupdateBlock(block,setTextRange(createNodeArray(statements),block.statements));
683683
}
684684
returnbody;

‎src/compiler/transformers/generators.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ namespace ts {
586586
transformAndEmitStatements(body.statements,statementOffset);
587587

588588
constbuildResult=build();
589-
addRange(statements,endLexicalEnvironment());
589+
prependRange(statements,endLexicalEnvironment());
590590
statements.push(createReturn(buildResult));
591591

592592
// Restore previous generator state

‎src/compiler/transformers/module/module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ namespace ts {
9797
append(statements,visitNode(currentModuleInfo.externalHelpersImportDeclaration,sourceElementVisitor,isStatement));
9898
addRange(statements,visitNodes(node.statements,sourceElementVisitor,isStatement,statementOffset));
9999
addExportEqualsIfNeeded(statements,/*emitAsReturn*/false);
100-
addRange(statements,endLexicalEnvironment());
100+
prependRange(statements,endLexicalEnvironment());
101101

102102
constupdated=updateSourceFileNode(node,setTextRange(createNodeArray(statements),node.statements));
103103
if(currentModuleInfo.hasExportStarsToExportValues&&!compilerOptions.importHelpers){
@@ -426,7 +426,7 @@ namespace ts {
426426

427427
// End the lexical environment for the module body
428428
// and merge any new lexical declarations.
429-
addRange(statements,endLexicalEnvironment());
429+
prependRange(statements,endLexicalEnvironment());
430430

431431
constbody=createBlock(statements,/*multiLine*/true);
432432
if(currentModuleInfo.hasExportStarsToExportValues&&!compilerOptions.importHelpers){

‎src/compiler/transformers/module/system.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ namespace ts {
257257
// We emit hoisted variables early to align roughly with our previous emit output.
258258
// Two key differences in this approach are:
259259
// - Temporary variables will appear at the top rather than at the bottom of the file
260-
addRange(statements,endLexicalEnvironment());
260+
prependRange(statements,endLexicalEnvironment());
261261

262262
constexportStarFunction=addExportStarIfNeeded(statements);
263263
constmoduleObject=createObjectLiteral([

‎src/compiler/transformers/ts.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ namespace ts {
669669
setEmitFlags(statement,EmitFlags.NoComments|EmitFlags.NoTokenSourceMaps);
670670
statements.push(statement);
671671

672-
addRange(statements,context.endLexicalEnvironment());
672+
prependRange(statements,context.endLexicalEnvironment());
673673

674674
constiife=createImmediatelyInvokedArrowFunction(statements);
675675
setEmitFlags(iife,EmitFlags.TypeScriptClassWrapper);
@@ -2685,8 +2685,9 @@ namespace ts {
26852685

26862686
conststatements:Statement[]=[];
26872687
startLexicalEnvironment();
2688-
addRange(statements,map(node.members,transformEnumMember));
2689-
addRange(statements,endLexicalEnvironment());
2688+
constmembers=map(node.members,transformEnumMember);
2689+
prependRange(statements,endLexicalEnvironment());
2690+
addRange(statements,members);
26902691

26912692
currentNamespaceContainerName=savedCurrentNamespaceLocalName;
26922693
returncreateBlock(
@@ -3000,7 +3001,7 @@ namespace ts {
30003001
statementsLocation=moveRangePos(moduleBlock.statements,-1);
30013002
}
30023003

3003-
addRange(statements,endLexicalEnvironment());
3004+
prependRange(statements,endLexicalEnvironment());
30043005
currentNamespaceContainerName=savedCurrentNamespaceContainerName;
30053006
currentNamespace=savedCurrentNamespace;
30063007
currentScopeFirstDeclarationsOfName=savedCurrentScopeFirstDeclarationsOfName;

‎src/compiler/visitor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ namespace ts {
145145
statements=setTextRange(createNodeArray([createStatement(createLiteral("use strict")), ...statements]),statements);
146146
}
147147
constdeclarations=context.endLexicalEnvironment();
148-
returnsetTextRange(createNodeArray(concatenate(statements,declarations)),statements);
148+
returnsetTextRange(createNodeArray(concatenate(declarations,statements)),statements);
149149
}
150150

151151
/**
@@ -1468,8 +1468,8 @@ namespace ts {
14681468
}
14691469

14701470
returnisNodeArray(statements)
1471-
?setTextRange(createNodeArray(concatenate(statements,declarations)),statements)
1472-
:addRange(statements,declarations);
1471+
?setTextRange(createNodeArray(concatenate(declarations,statements)),statements)
1472+
:prependRange(statements,declarations);
14731473
}
14741474

14751475
/**

‎tests/baselines/reference/ES5For-of30.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ for ([a = 1, b = ""] of tuple) {
77
}
88

99
//// [ES5For-of30.js]
10+
var_a,_b,_c;
1011
vara,b;
1112
vartuple=[2,"3"];
1213
for(var_i=0,tuple_1=tuple;_i<tuple_1.length;_i++){
1314
_a=tuple_1[_i],_b=_a[0],a=_b===void0 ?1 :_b,_c=_a[1],b=_c===void0 ?"" :_c;
1415
a;
1516
b;
1617
}
17-
var_a,_b,_c;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp