display_name

package
v0.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DisplayNameRule = rule.Rule{
	Name: "react/display-name",
	Run: func(ctx rule.RuleContext, options any) rule.RuleListeners {
		opts := parseOptions(options)
		pragma := reactutil.GetReactPragma(ctx.Settings)
		createClass := reactutil.GetReactCreateClass(ctx.Settings)
		wrappers := reactutil.GetComponentWrapperFunctions(ctx.Settings, pragma)

		checkContextObjects := opts.CheckContextObjects && reactVersionAtLeast(ctx.Settings, 16, 3, 0)
		nestedMemoSupported := supportsNestedMemo(ctx.Settings)

		w := &nodeWalker{
			ctx:                 ctx,
			opts:                opts,
			pragma:              pragma,
			createClass:         createClass,
			wrappers:            wrappers,
			tc:                  ctx.TypeChecker,
			checkContextObjects: checkContextObjects,
			nestedMemoSupported: nestedMemoSupported,
			byNode:              map[*ast.Node]*detectedComponent{},
			nameToComponent:     map[string]*detectedComponent{},
			topBindings:         map[string]*ast.Node{},
			contextObjects:      map[string]*contextEntry{},
		}
		w.collect()

		for _, comp := range w.order {
			if comp.hasDisplayName {
				continue
			}
			if w.nestedMemoSupported && w.isNestedMemo(comp.node) {
				continue
			}
			if w.isShadowedComponent(comp.node) {
				continue
			}
			ctx.ReportRange(reportRangeFor(ctx, comp.node), rule.RuleMessage{
				Id:          "noDisplayName",
				Description: "Component definition is missing display name",
			})
		}

		if checkContextObjects {
			reportContextObjects(ctx, w)
		}

		return rule.RuleListeners{}
	},
}

DisplayNameRule is the registered rule. Use the `react/` prefix in registration.

Functions

This section is empty.

Types

type Options

type Options struct {
	IgnoreTranspilerName bool
	CheckContextObjects  bool
}

Options carries the parsed rule options. Mirrors upstream's schema:

[{
  type: 'object',
  properties: {
    ignoreTranspilerName: { type: 'boolean' },
    checkContextObjects:  { type: 'boolean' },
  },
  additionalProperties: false,
}]

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL