Skip to content

Commit

Permalink
Use node names for most spans to reduce noise in error logs and IDE a…
Browse files Browse the repository at this point in the history
…nalysis
  • Loading branch information
greglittlefield-wf committed Jun 5, 2020
1 parent 8423e4b commit e891d39
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 16 deletions.
8 changes: 4 additions & 4 deletions lib/src/builder/parsing/declarations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ abstract class BoilerplateDeclaration {
if (version == null) {
// This should almost never happen.
errorCollector.addError(
'Could not determine boilerplate version.', errorCollector.spanFor(_members.first.node));
'Could not determine boilerplate version.', errorCollector.spanFor(_members.first.name));
return;
}

Expand Down Expand Up @@ -106,17 +106,17 @@ class LegacyClassComponentDeclaration extends BoilerplateDeclaration {
if (!component.node.hasAnnotationWithNames({'Component', 'Component2'})) {
errorCollector.addError(
'Legacy boilerplate components must be annotated with `@Component()` or `@Component2()`.',
errorCollector.spanFor(component.node));
errorCollector.spanFor(component.name));
}

if (!props.node.hasAnnotationWithNames({'Props'})) {
errorCollector.addError('Legacy boilerplate props classes must be annotated with `@Props()`.',
errorCollector.spanFor(props.node));
errorCollector.spanFor(props.name));
}

if (state != null && !state.node.hasAnnotationWithNames({'State'})) {
errorCollector.addError('Legacy boilerplate state classes must be annotated with `@State()`.',
errorCollector.spanFor(state.node));
errorCollector.spanFor(state.name));
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions lib/src/builder/parsing/declarations_from_members.dart
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ Iterable<BoilerplateDeclaration> getBoilerplateDeclarations(
if (nonNullFactoryPropsOrComponents.isEmpty) {
assert(stateClass != null);
if (resolveVersion([stateClass]).shouldGenerate) {
errorCollector.addError(errorStateOnly, errorCollector.spanFor(stateClass.node));
errorCollector.addError(errorStateOnly, errorCollector.spanFor(stateClass.name));
}
continue;
}
Expand All @@ -330,7 +330,7 @@ Iterable<BoilerplateDeclaration> getBoilerplateDeclarations(
switch (nonNullFactoryPropsOrComponents.length) {
case 1:
final single = nonNullFactoryPropsOrComponents.single;
final span = errorCollector.spanFor(single.node);
final span = errorCollector.spanFor(single.name);
if (single == factory) {
errorCollector.addError(errorFactoryOnly, span);
} else if (single == propsClass) {
Expand All @@ -340,7 +340,7 @@ Iterable<BoilerplateDeclaration> getBoilerplateDeclarations(
}
continue;
case 2:
final span = errorCollector.spanFor((factory ?? propsClass).node);
final span = errorCollector.spanFor((factory ?? propsClass).name);
if (factory == null) {
errorCollector.addError(errorNoFactory, span);
} else if (propsClass == null) {
Expand All @@ -355,7 +355,7 @@ Iterable<BoilerplateDeclaration> getBoilerplateDeclarations(
// General case (should be rare if not impossible)
for (final member in group) {
errorCollector.addError(
'Mismatched boilerplate member found', errorCollector.spanFor(member.node));
'Mismatched boilerplate member found', errorCollector.spanFor(member.name));
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions lib/src/builder/parsing/members/component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ class BoilerplateComponent extends BoilerplateMember {
// This is a warning since emitting an error would break existing code that's doing this.
errorCollector.addWarning(
'Components should not add their own implementations of ${member.name.name}.',
errorCollector.spanFor(member));
errorCollector.spanFor(member.name));
});

// Ensure that Component2 declarations do not use legacy lifecycle methods.
Expand All @@ -136,7 +136,7 @@ class BoilerplateComponent extends BoilerplateMember {
$helpMessage
See https://reactjs.org/docs/react-component.html#legacy-lifecycle-methods for additional information.
'''), errorCollector.spanFor(method));
'''), errorCollector.spanFor(method.name));
}
});
}
Expand Down
2 changes: 1 addition & 1 deletion lib/src/builder/parsing/members/factory.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class BoilerplateFactory extends BoilerplateMember {
if (!hasFactoryAnnotation) {
errorCollector.addError(
'Legacy boilerplate factories must be annotated with `@Factory()`.',
errorCollector.spanFor(node));
errorCollector.spanFor(name));
}

break;
Expand Down
6 changes: 3 additions & 3 deletions lib/src/builder/parsing/members/props_and_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ abstract class BoilerplatePropsOrState extends BoilerplateTypedMapMember
if (nodeHelper.superclass?.nameWithoutPrefix != propsOrStateBaseClassString) {
errorCollector.addError(
'$propsOrStateClassString implementations must extend directly from $propsOrStateBaseClassString',
errorCollector.spanFor(nodeHelper.superclass ?? node));
errorCollector.spanFor(nodeHelper.superclass ?? node.name));
}

if (node is ClassDeclaration && !node.members.every(isStaticMember)) {
Expand All @@ -100,7 +100,7 @@ abstract class BoilerplatePropsOrState extends BoilerplateTypedMapMember
if (companion == null) {
// Don't emit this and the prefix error.
if (node.name.name.startsWith(privateSourcePrefix)) {
errorCollector.addError('Should have companion class', errorCollector.spanFor(node));
errorCollector.addError('Should have companion class', errorCollector.spanFor(node.name));
}
} else {
validateMetaField(companion, propsOrStateMetaStructName, errorCollector);
Expand Down Expand Up @@ -128,7 +128,7 @@ abstract class BoilerplatePropsOrState extends BoilerplateTypedMapMember
errorCollector.addError(
'The class `${node.name.name}` does not start with `$privateSourcePrefix`. All Props, State, '
'AbstractProps, and AbstractState classes should begin with `$privateSourcePrefix` on Dart 2',
errorCollector.spanFor(node));
errorCollector.spanFor(node.name));
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions lib/src/builder/parsing/members/props_and_state_mixins.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,14 @@ abstract class BoilerplatePropsOrStateMixin extends BoilerplateTypedMapMember
errorCollector.addError(
'Legacy boilerplate ${propsOrStateMixinString}s must be annotated with '
'`@$propsOrStateMixinAnnotationName()`',
errorCollector.spanFor(node));
errorCollector.spanFor(node.name));
}

if (!node.hasAbstractGetter('Map', propsOrStateString)) {
errorCollector.addError(
'$propsOrStateMixinString classes must declare an abstract $propsOrStateString getter `Map get $propsOrStateString;` '
'so that they can be statically analyzed properly.',
errorCollector.spanFor(node));
errorCollector.spanFor(node.name));
}
}

Expand Down

0 comments on commit e891d39

Please sign in to comment.