github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/linter/visitor/extendedDisableRuleVisitor.go (about)

     1  package visitor
     2  
     3  import (
     4  	"github.com/yoheimuta/go-protoparser/v4/parser"
     5  
     6  	"github.com/yoheimuta/protolint/linter/disablerule"
     7  	"github.com/yoheimuta/protolint/linter/report"
     8  )
     9  
    10  // TODO: To work `enable comments` more precisely, this implementation has to be modified.
    11  type extendedDisableRuleVisitor struct {
    12  	inner       HasExtendedVisitor
    13  	interpreter *disablerule.Interpreter
    14  }
    15  
    16  func newExtendedDisableRuleVisitor(
    17  	inner HasExtendedVisitor,
    18  	ruleID string,
    19  ) extendedDisableRuleVisitor {
    20  	interpreter := disablerule.NewInterpreter(ruleID)
    21  	return extendedDisableRuleVisitor{
    22  		inner:       inner,
    23  		interpreter: interpreter,
    24  	}
    25  }
    26  
    27  func (v extendedDisableRuleVisitor) OnStart(p *parser.Proto) error { return v.inner.OnStart(p) }
    28  func (v extendedDisableRuleVisitor) Finally() error                { return v.inner.Finally() }
    29  func (v extendedDisableRuleVisitor) Failures() []report.Failure    { return v.inner.Failures() }
    30  func (v extendedDisableRuleVisitor) VisitEmptyStatement(e *parser.EmptyStatement) (next bool) {
    31  	return v.inner.VisitEmptyStatement(e)
    32  }
    33  
    34  func (v extendedDisableRuleVisitor) VisitComment(c *parser.Comment) {
    35  	if v.interpreter.Interpret([]*parser.Comment{c}) {
    36  		return
    37  	}
    38  	v.inner.VisitComment(c)
    39  }
    40  
    41  func (v extendedDisableRuleVisitor) VisitEnum(e *parser.Enum) (next bool) {
    42  	if v.interpreter.Interpret(e.Comments, e.InlineComment, e.InlineCommentBehindLeftCurly) {
    43  		return true
    44  	}
    45  	return v.inner.VisitEnum(e)
    46  }
    47  
    48  func (v extendedDisableRuleVisitor) VisitEnumField(e *parser.EnumField) (next bool) {
    49  	if v.interpreter.Interpret(e.Comments, e.InlineComment) {
    50  		return true
    51  	}
    52  	return v.inner.VisitEnumField(e)
    53  }
    54  
    55  func (v extendedDisableRuleVisitor) VisitExtend(m *parser.Extend) (next bool) {
    56  	if v.interpreter.Interpret(m.Comments, m.InlineComment, m.InlineCommentBehindLeftCurly) {
    57  		return true
    58  	}
    59  	return v.inner.VisitExtend(m)
    60  }
    61  
    62  func (v extendedDisableRuleVisitor) VisitExtensions(m *parser.Extensions) (next bool) {
    63  	if v.interpreter.Interpret(m.Comments, m.InlineComment) {
    64  		return true
    65  	}
    66  	return v.inner.VisitExtensions(m)
    67  }
    68  
    69  func (v extendedDisableRuleVisitor) VisitField(f *parser.Field) (next bool) {
    70  	if v.interpreter.Interpret(f.Comments, f.InlineComment) {
    71  		return true
    72  	}
    73  	return v.inner.VisitField(f)
    74  }
    75  
    76  func (v extendedDisableRuleVisitor) VisitGroupField(m *parser.GroupField) (next bool) {
    77  	if v.interpreter.Interpret(m.Comments, m.InlineComment, m.InlineCommentBehindLeftCurly) {
    78  		return true
    79  	}
    80  	return v.inner.VisitGroupField(m)
    81  }
    82  
    83  func (v extendedDisableRuleVisitor) VisitImport(i *parser.Import) (next bool) {
    84  	if v.interpreter.Interpret(i.Comments, i.InlineComment) {
    85  		return true
    86  	}
    87  	return v.inner.VisitImport(i)
    88  }
    89  
    90  func (v extendedDisableRuleVisitor) VisitMapField(m *parser.MapField) (next bool) {
    91  	if v.interpreter.Interpret(m.Comments, m.InlineComment) {
    92  		return true
    93  	}
    94  	return v.inner.VisitMapField(m)
    95  }
    96  
    97  func (v extendedDisableRuleVisitor) VisitMessage(m *parser.Message) (next bool) {
    98  	if v.interpreter.Interpret(m.Comments, m.InlineComment, m.InlineCommentBehindLeftCurly) {
    99  		return true
   100  	}
   101  	return v.inner.VisitMessage(m)
   102  }
   103  
   104  func (v extendedDisableRuleVisitor) VisitOneof(o *parser.Oneof) (next bool) {
   105  	if v.interpreter.Interpret(o.Comments, o.InlineComment, o.InlineCommentBehindLeftCurly) {
   106  		return true
   107  	}
   108  	return v.inner.VisitOneof(o)
   109  }
   110  
   111  func (v extendedDisableRuleVisitor) VisitOneofField(o *parser.OneofField) (next bool) {
   112  	if v.interpreter.Interpret(o.Comments, o.InlineComment) {
   113  		return true
   114  	}
   115  	return v.inner.VisitOneofField(o)
   116  }
   117  
   118  func (v extendedDisableRuleVisitor) VisitOption(o *parser.Option) (next bool) {
   119  	if v.interpreter.Interpret(o.Comments, o.InlineComment) {
   120  		return true
   121  	}
   122  	return v.inner.VisitOption(o)
   123  }
   124  
   125  func (v extendedDisableRuleVisitor) VisitPackage(p *parser.Package) (next bool) {
   126  	if v.interpreter.Interpret(p.Comments, p.InlineComment) {
   127  		return true
   128  	}
   129  	return v.inner.VisitPackage(p)
   130  }
   131  
   132  func (v extendedDisableRuleVisitor) VisitReserved(r *parser.Reserved) (next bool) {
   133  	if v.interpreter.Interpret(r.Comments, r.InlineComment) {
   134  		return true
   135  	}
   136  	return v.inner.VisitReserved(r)
   137  }
   138  
   139  func (v extendedDisableRuleVisitor) VisitRPC(r *parser.RPC) (next bool) {
   140  	var inlines []*parser.Comment
   141  	inlines = append(inlines, r.InlineComment, r.InlineCommentBehindLeftCurly)
   142  	inlines = append(inlines, r.EmbeddedComments...)
   143  	if v.interpreter.Interpret(r.Comments, inlines...) {
   144  		return true
   145  	}
   146  	return v.inner.VisitRPC(r)
   147  }
   148  
   149  func (v extendedDisableRuleVisitor) VisitService(s *parser.Service) (next bool) {
   150  	if v.interpreter.Interpret(s.Comments, s.InlineComment, s.InlineCommentBehindLeftCurly) {
   151  		return true
   152  	}
   153  	return v.inner.VisitService(s)
   154  }
   155  
   156  func (v extendedDisableRuleVisitor) VisitSyntax(s *parser.Syntax) (next bool) {
   157  	if v.interpreter.Interpret(s.Comments, s.InlineComment) {
   158  		return true
   159  	}
   160  	return v.inner.VisitSyntax(s)
   161  }