Skip to content

Crash in getBaseTypes #2284

@DorianListens

Description

@DorianListens

Stack trace

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x100 pc=0x102c7d250]

goroutine 149880 [running]:
github.com/microsoft/typescript-go/internal/checker.(*Checker).getBaseTypes(0x140a7418008, 0x140be338fc0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:18574 +0x30
github.com/microsoft/typescript-go/internal/checker.(*Checker).isPropertyDeclaredInAncestorClass(0x140a7418008, 0x140964df238)
	github.com/microsoft/typescript-go/internal/checker/checker.go:11378 +0x70
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkPropertyNotUsedBeforeDeclaration(0x140a7418008, 0x140964df238, 0x140492bb0b8?, 0x140492bb0b8)
	github.com/microsoft/typescript-go/internal/checker/checker.go:11358 +0x2e4
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkPropertyAccessExpressionOrQualifiedName(0x140a7418008, 0x14031da8ec8, 0x140492c02a0, 0x141606bd490, 0x140492bb0b8, 0x0, 0x0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:11022 +0x794
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkPropertyAccessExpression(0x140a7418008, 0x14031da8ec8, 0x0, 0x0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:10912 +0x7c
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkExpressionWorker(0x140a7418008, 0x14031da8ec8, 0x1?)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7537 +0x320
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkExpressionEx(0x140a7418008, 0x14031da8ec8, 0x0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7334 +0x50
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkExpression(...)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7327
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkNonNullExpression(0x140a7418008, 0x14031da8ec8)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7179 +0x28
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkPropertyAccessExpression(0x140a7418008, 0x14048e4f8c0, 0x0, 0x0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:10912 +0x48
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkExpressionWorker(0x140a7418008, 0x14048e4f8c0, 0xb4a0f7c8?)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7537 +0x320
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkExpressionEx(0x140a7418008, 0x14048e4f8c0, 0x0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7334 +0x50
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkExpression(...)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7327
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkNonNullExpression(0x140a7418008, 0x14048e4f8c0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7179 +0x28
github.com/microsoft/typescript-go/internal/checker.(*Checker).getQuickTypeOfExpression(0x140a7418008, 0x14048e4fa20)
	github.com/microsoft/typescript-go/internal/checker/checker.go:7149 +0x104
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkDeclarationInitializer(0x140a7418008, 0x140492c0310, 0x0, 0x0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:16305 +0x40
github.com/microsoft/typescript-go/internal/checker.(*Checker).getTypeForVariableLikeDeclaration(0x140a7418008, 0x140492c0310, 0x1?, 0x0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:16255 +0x6e4
github.com/microsoft/typescript-go/internal/checker.(*Checker).getWidenedTypeForVariableLikeDeclaration(0x140a7418008, 0x140492c0310, 0x1)
	github.com/microsoft/typescript-go/internal/checker/checker.go:16158 +0x30
github.com/microsoft/typescript-go/internal/checker.(*Checker).getTypeOfVariableOrParameterOrPropertyWorker(0x140a7418008, 0x140964df238)
	github.com/microsoft/typescript-go/internal/checker/checker.go:16118 +0x24c
github.com/microsoft/typescript-go/internal/checker.(*Checker).getTypeOfVariableOrParameterOrProperty(0x140a7418008, 0x140964df238)
	github.com/microsoft/typescript-go/internal/checker/checker.go:16055 +0x50
github.com/microsoft/typescript-go/internal/checker.(*Checker).getTypeOfSymbol(0x140a7418008?, 0x140492c0310?)
	github.com/microsoft/typescript-go/internal/checker/checker.go:16015 +0xa8
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkVariableLikeDeclaration(0x140a7418008, 0x140492c0310)
	github.com/microsoft/typescript-go/internal/checker/checker.go:5703 +0x258
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkPropertyDeclaration(0x140a7418008, 0x140492c0310)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2605 +0x60
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElementWorker(0x140a7418008, 0x140492c0310)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2181 +0xb0
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElement(0x140a7418008, 0x102c21c44?)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2150 +0x58
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElements(0x140a7418008, {0x140485d9a40, 0x7, 0x14012966958?})
	github.com/microsoft/typescript-go/internal/checker/checker.go:2140 +0x34
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkClassDeclaration(0x140a7418008, 0x14048e77dd0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:4162 +0x13c
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElementWorker(0x140a7418008, 0x14048e77dd0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2267 +0x2c0
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElement(0x140a7418008, 0x140a802d920?)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2150 +0x58
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElements(0x140a7418008, {0x140485d9a78, 0x6, 0x1402de39090?})
	github.com/microsoft/typescript-go/internal/checker/checker.go:2140 +0x34
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceFile(0x140a7418008, {0x1034b9de0, 0x103b34880}, 0x140492b7208)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2112 +0xf4
github.com/microsoft/typescript-go/internal/checker.(*Checker).CheckSourceFile(0x140a7418008, {0x1034b9de0, 0x103b34880}, 0x140492b7208)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2101 +0x64
github.com/microsoft/typescript-go/internal/compiler.(*Program).getDiagnosticsHelper.(*Program).CheckSourceFiles.func1-range1(0x1405df83eb8?)
	github.com/microsoft/typescript-go/internal/compiler/program.go:378 +0x8c
github.com/microsoft/typescript-go/internal/compiler.(*checkerPool).Files.func1(0x140a79edcc0)
	github.com/microsoft/typescript-go/internal/compiler/checkerpool.go:119 +0x7c
github.com/microsoft/typescript-go/internal/compiler.(*Program).getDiagnosticsHelper.(*Program).CheckSourceFiles.func1(0x1405df83f78?, 0x140a7418008)
	github.com/microsoft/typescript-go/internal/compiler/program.go:376 +0xec
github.com/microsoft/typescript-go/internal/compiler.(*checkerPool).ForEachCheckerParallel.func1()
	github.com/microsoft/typescript-go/internal/compiler/checkerpool.go:108 +0xe0
github.com/microsoft/typescript-go/internal/core.(*parallelWorkGroup).Queue.func1()
	github.com/microsoft/typescript-go/internal/core/workgroup.go:40 +0x24
sync.(*WaitGroup).Go.func1()
	sync/waitgroup.go:239 +0x4c
created by sync.(*WaitGroup).Go in goroutine 1
	sync/waitgroup.go:237 +0x70

Steps to reproduce

This occurs in a large closed source project, which compiles cleanly with TypeScript 5.9.3. I'm not sure how to provide a minimal reproduction, as I'm not sure where in the codebase the issue is.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions