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

Function checkMemberForOverrideModifier

test/fixtures/snapshot/typescript.js:84244–84303  ·  view source on GitHub ↗

* Checks a class member declaration for either a missing or an invalid `override` modifier. * Note: this function can be used for speculative checking, * i.e. checking a member that does not yet exist in the program. * An example of that would be to call this function in a

(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, memberHasOverrideModifier, memberHasAbstractModifier, memberIsStatic, memberIsParameterProperty, memberName, errorNode)

Source from the content-addressed store, hash-verified

84242 * @param errorNode The node where we should report an error, or undefined if we should not report errors.
84243 */
84244 function checkMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, memberHasOverrideModifier, memberHasAbstractModifier, memberIsStatic, memberIsParameterProperty, memberName, errorNode) {
84245 var isJs = ts.isInJSFile(node);
84246 var nodeInAmbientContext = !!(node.flags & 16777216 /* NodeFlags.Ambient */);
84247 if (baseWithThis && (memberHasOverrideModifier || compilerOptions.noImplicitOverride)) {
84248 var memberEscapedName = ts.escapeLeadingUnderscores(memberName);
84249 var thisType = memberIsStatic ? staticType : typeWithThis;
84250 var baseType = memberIsStatic ? baseStaticType : baseWithThis;
84251 var prop = getPropertyOfType(thisType, memberEscapedName);
84252 var baseProp = getPropertyOfType(baseType, memberEscapedName);
84253 var baseClassName = typeToString(baseWithThis);
84254 if (prop && !baseProp && memberHasOverrideModifier) {
84255 if (errorNode) {
84256 var suggestion = getSuggestedSymbolForNonexistentClassMember(memberName, baseType); // Again, using symbol name: note that's different from `symbol.escapedName`
84257 suggestion ?
84258 error(errorNode, isJs ?
84259 ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1 :
84260 ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1, baseClassName, symbolToString(suggestion)) :
84261 error(errorNode, isJs ?
84262 ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0 :
84263 ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0, baseClassName);
84264 }
84265 return 2 /* MemberOverrideStatus.HasInvalidOverride */;
84266 }
84267 else if (prop && (baseProp === null || baseProp === void 0 ? void 0 : baseProp.declarations) && compilerOptions.noImplicitOverride && !nodeInAmbientContext) {
84268 var baseHasAbstract = ts.some(baseProp.declarations, ts.hasAbstractModifier);
84269 if (memberHasOverrideModifier) {
84270 return 0 /* MemberOverrideStatus.Ok */;
84271 }
84272 if (!baseHasAbstract) {
84273 if (errorNode) {
84274 var diag = memberIsParameterProperty ?
84275 isJs ?
84276 ts.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 :
84277 ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0 :
84278 isJs ?
84279 ts.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 :
84280 ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0;
84281 error(errorNode, diag, baseClassName);
84282 }
84283 return 1 /* MemberOverrideStatus.NeedsOverride */;
84284 }
84285 else if (memberHasAbstractModifier && baseHasAbstract) {
84286 if (errorNode) {
84287 error(errorNode, ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0, baseClassName);
84288 }
84289 return 1 /* MemberOverrideStatus.NeedsOverride */;
84290 }
84291 }
84292 }
84293 else if (memberHasOverrideModifier) {
84294 if (errorNode) {
84295 var className = typeToString(type);
84296 error(errorNode, isJs ?
84297 ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class :
84298 ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class, className);
84299 }
84300 return 2 /* MemberOverrideStatus.HasInvalidOverride */;
84301 }

Calls 6

getPropertyOfTypeFunction · 0.85
typeToStringFunction · 0.85
symbolToStringFunction · 0.85
someMethod · 0.80
errorFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…