When using TypeScript property shorthand (e.g. { imports }) in an object literal that matches a known property on a decorator (such as the imports property of NestJS @Module), scip-typescript resolves the property to the builtin symbol (e.g. ModuleMetadata#imports) instead of the local identifier (e.g. the value imported from './modules').
Example:
import { Module } from '@nestjs/common';
import { imports } from './modules';
@Module({
controllers: [],
imports, // property shorthand
providers: []
})
export class AppModule {}
In this example, the imports property is resolved to the built-in ModuleMetadata#imports instead of the local imports identifier.
[relative_path: "src/app/app.module.ts"
occurrences {
range: 0
range: 0
range: 0
symbol: "scip-typescript npm minimal-indexing-env 1.0.0 src/app/`app.module.ts`/"
symbol_roles: 1
enclosing_range: 0
enclosing_range: 0
enclosing_range: 8
enclosing_range: 0
}
occurrences {
range: 0
range: 9
range: 15
symbol: "scip-typescript npm @nestjs/common 9.4.3 decorators/modules/`module.decorator.d.ts`/Module()."
}
occurrences {
range: 0
range: 23
range: 39
symbol: "scip-typescript npm @nestjs/common 9.4.3 `index.d.ts`/"
}
occurrences {
range: 1
range: 9
range: 16
symbol: "scip-typescript npm minimal-indexing-env 1.0.0 src/app/modules/`index.ts`/imports."
}
occurrences {
range: 1
range: 24
range: 35
symbol: "scip-typescript npm minimal-indexing-env 1.0.0 src/app/modules/`index.ts`/"
}
occurrences {
range: 2
range: 1
range: 7
symbol: "scip-typescript npm @nestjs/common 9.4.3 decorators/modules/`module.decorator.d.ts`/Module()."
}
occurrences {
range: 3
range: 2
range: 13
symbol: "scip-typescript npm @nestjs/common 9.4.3 interfaces/modules/`module-metadata.interface.d.ts`/ModuleMetadata#controllers."
}
occurrences {
range: 4
range: 2
range: 9
symbol: "scip-typescript npm @nestjs/common 9.4.3 interfaces/modules/`module-metadata.interface.d.ts`/ModuleMetadata#imports."
}
occurrences {
range: 5
range: 2
range: 11
symbol: "scip-typescript npm @nestjs/common 9.4.3 interfaces/modules/`module-metadata.interface.d.ts`/ModuleMetadata#providers."
}
occurrences {
range: 7
range: 13
range: 22
symbol: "scip-typescript npm minimal-indexing-env 1.0.0 src/app/`app.module.ts`/AppModule#"
symbol_roles: 1
enclosing_range: 2
enclosing_range: 0
enclosing_range: 7
enclosing_range: 25
}
symbols {
symbol: "scip-typescript npm minimal-indexing-env 1.0.0 src/app/`app.module.ts`/"
documentation: "```ts\nmodule \"app.module.ts\"\n```"
}
symbols {
symbol: "scip-typescript npm minimal-indexing-env 1.0.0 src/app/`app.module.ts`/AppModule#"
documentation: "```ts\nclass AppModule\n```"
}]
Expected behavior - The symbol for the value of the imports property should be resolved to the local identifier (./modules#imports), not the property defined in the decorator's interface.
This causes loss of correct symbol connectivity and reference tracking between modules in larger codebases (e.g., monorepos).
When using TypeScript property shorthand (e.g.
{ imports }) in an object literal that matches a known property on a decorator (such as the imports property of NestJS@Module),scip-typescriptresolves the property to the builtin symbol (e.g.ModuleMetadata#imports) instead of the local identifier (e.g. the value imported from'./modules').Example:
In this example, the
importsproperty is resolved to the built-inModuleMetadata#importsinstead of the local imports identifier.Expected behavior - The symbol for the value of the imports property should be resolved to the local identifier (
./modules#imports), not the property defined in the decorator's interface.This causes loss of correct symbol connectivity and reference tracking between modules in larger codebases (e.g., monorepos).