Skip to content

Commit 77906a9

Browse files
Fix class self mismatch for ServiceMap services (#690)
1 parent aed2074 commit 77906a9

File tree

6 files changed

+34
-0
lines changed

6 files changed

+34
-0
lines changed

.changeset/hot-walls-share.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@effect/language-service": patch
3+
---
4+
5+
Fix the class self mismatch diagnostic so it also reports invalid `ServiceMap.Service` self type parameters.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// code fix classSelfMismatch_fix output for range 317 - 328
2+
import { ServiceMap, Effect } from "effect"
3+
4+
export class CorrectName extends ServiceMap.Service<CorrectName, {
5+
writeCache: () => Effect.Effect<void, never, FileSystem | Cache>
6+
readCache: Effect.Effect<void, never, FileSystem | Cache>
7+
}>()("CorrectName") {}
8+
9+
export class WrongName extends ServiceMap.Service<WrongName, {
10+
writeCache: () => Effect.Effect<void, never, FileSystem | Cache>
11+
readCache: Effect.Effect<void, never, FileSystem | Cache>
12+
}>()("WrongName") {}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
classSelfMismatch_fix from 317 to 328
2+
classSelfMismatch_skipNextLine from 317 to 328
3+
classSelfMismatch_skipFile from 317 to 328
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
CorrectName
2+
8:50 - 8:61 | 1 | Self type parameter should be 'WrongName' effect(classSelfMismatch)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { ServiceMap, Effect } from "effect"
2+
3+
export class CorrectName extends ServiceMap.Service<CorrectName, {
4+
writeCache: () => Effect.Effect<void, never, FileSystem | Cache>
5+
readCache: Effect.Effect<void, never, FileSystem | Cache>
6+
}>()("CorrectName") {}
7+
8+
export class WrongName extends ServiceMap.Service<CorrectName, {
9+
writeCache: () => Effect.Effect<void, never, FileSystem | Cache>
10+
readCache: Effect.Effect<void, never, FileSystem | Cache>
11+
}>()("WrongName") {}

packages/language-service/src/diagnostics/classSelfMismatch.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export const classSelfMismatch = LSP.createDiagnostic({
3232
// Check if this class extends a class that has a Self type parameter
3333
const result = yield* pipe(
3434
typeParser.extendsEffectService(node),
35+
Nano.orElse(() => typeParser.extendsServiceMapService(node)),
3536
Nano.orElse(() => typeParser.extendsContextTag(node)),
3637
Nano.orElse(() => typeParser.extendsEffectTag(node)),
3738
Nano.orElse(() => typeParser.extendsSchemaClass(node)),

0 commit comments

Comments
 (0)