MCPcopy Index your code
hub / github.com/nodejs/node / checkPropertyNotUsedBeforeDeclaration

Function checkPropertyNotUsedBeforeDeclaration

test/fixtures/snapshot/typescript.js:74799–74823  ·  view source on GitHub ↗
(prop, node, right)

Source from the content-addressed store, hash-verified

74797 return assignmentKind ? getBaseTypeOfLiteralType(flowType) : flowType;
74798 }
74799 function checkPropertyNotUsedBeforeDeclaration(prop, node, right) {
74800 var valueDeclaration = prop.valueDeclaration;
74801 if (!valueDeclaration || ts.getSourceFileOfNode(node).isDeclarationFile) {
74802 return;
74803 }
74804 var diagnosticMessage;
74805 var declarationName = ts.idText(right);
74806 if (isInPropertyInitializerOrClassStaticBlock(node)
74807 && !isOptionalPropertyDeclaration(valueDeclaration)
74808 && !(ts.isAccessExpression(node) && ts.isAccessExpression(node.expression))
74809 && !isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)
74810 && !(ts.isMethodDeclaration(valueDeclaration) && ts.getCombinedModifierFlags(valueDeclaration) & 32 /* ModifierFlags.Static */)
74811 && (compilerOptions.useDefineForClassFields || !isPropertyDeclaredInAncestorClass(prop))) {
74812 diagnosticMessage = error(right, ts.Diagnostics.Property_0_is_used_before_its_initialization, declarationName);
74813 }
74814 else if (valueDeclaration.kind === 257 /* SyntaxKind.ClassDeclaration */ &&
74815 node.parent.kind !== 178 /* SyntaxKind.TypeReference */ &&
74816 !(valueDeclaration.flags & 16777216 /* NodeFlags.Ambient */) &&
74817 !isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)) {
74818 diagnosticMessage = error(right, ts.Diagnostics.Class_0_used_before_its_declaration, declarationName);
74819 }
74820 if (diagnosticMessage) {
74821 ts.addRelatedInfo(diagnosticMessage, ts.createDiagnosticForNode(valueDeclaration, ts.Diagnostics._0_is_declared_here, declarationName));
74822 }
74823 }
74824 function isInPropertyInitializerOrClassStaticBlock(node) {
74825 return !!ts.findAncestor(node, function (node) {
74826 switch (node.kind) {

Tested by

no test coverage detected