chinchiheather / tslint-lines-between-class-members

Custom rule for TSLint to enforce blank lines between class methods - achieves a similar thing to lines-between-class-members in ESLint
18 stars 5 forks source link

Linting fails for constructor of generic type after prettier multi-line format #13

Open seangwright opened 5 years ago

seangwright commented 5 years ago

Prettier formats some generic type definitions by placing the generic constraints on multiple lines.

This causes tslint-lines-between-class-members to fail linting.

The error is must have 1 new line(s) between class methods, see docs for how to configure which appears on the constructor() { line.

I believe this is due to how you are checking the previous line.

Passes

export class PermissionsStore extends EntityStore<PermissionsState, Permission> {
  constructor() {
    super();
  }
}

Fails

export class PermissionsStore extends EntityStore<
  PermissionsState,
  Permission
> {
  constructor() {
    super();
  }
}

I also ran into this situation where Prettier puts the implements keyword on its own line which causes this lint rule to fail at the line constructor() { }.

interface SomeInterface {
    name: string;
}

export class SomeClass
  implements SomeInterface {
  constructor() { }

  name = 'test';
}
chinchiheather commented 5 years ago

This should be fixed in 1.3.5, let me know if you are still getting any problems

seangwright commented 5 years ago

Awesome! Thanks so much!

eyev commented 5 years ago

I worked alongside @seangwright on a project we really felt the pain of this issue on. I've updated our packages and can confirm this has been resolved. Thank you, @chinchiheather much appreciated!