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 }