@appthreat/atom-parsetools 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (838) hide show
  1. package/package.json +3 -3
  2. package/plugins/autoload.php +1 -1
  3. package/plugins/bin/bundler +1 -1
  4. package/plugins/bin/ruby_ast_gen +1 -1
  5. package/plugins/composer/autoload_classmap.php +22 -8
  6. package/plugins/composer/autoload_real.php +4 -4
  7. package/plugins/composer/autoload_static.php +26 -12
  8. package/plugins/composer/installed.json +12 -10
  9. package/plugins/composer/installed.php +9 -9
  10. package/plugins/nikic/php-parser/README.md +20 -12
  11. package/plugins/nikic/php-parser/bin/php-parse +11 -10
  12. package/plugins/nikic/php-parser/composer.json +6 -4
  13. package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +19 -17
  14. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +35 -30
  15. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +11 -4
  16. package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +8 -7
  17. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +26 -27
  18. package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +7 -7
  19. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +7 -7
  20. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +11 -10
  21. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +16 -15
  22. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +5 -5
  23. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +38 -35
  24. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +82 -20
  25. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +6 -5
  26. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +25 -28
  27. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +16 -11
  28. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +8 -8
  29. package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +2 -3
  30. package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +46 -70
  31. package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +23 -20
  32. package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +1 -2
  33. package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +37 -67
  34. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +3 -3
  35. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +15 -10
  36. package/plugins/nikic/php-parser/lib/PhpParser/Error.php +26 -33
  37. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +6 -9
  38. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +2 -3
  39. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +2 -3
  40. package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +11 -7
  41. package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +36 -22
  42. package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +20 -13
  43. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  44. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +70 -74
  45. package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +15 -10
  46. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +72 -97
  47. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php +93 -0
  48. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +11 -18
  49. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +10 -15
  50. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +12 -11
  51. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +24 -26
  52. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +6 -10
  53. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +22 -29
  54. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php +19 -0
  55. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +3 -3
  56. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +10 -15
  57. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +6 -5
  58. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +10 -5
  59. package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +69 -513
  60. package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +85 -0
  61. package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +24 -25
  62. package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +13 -15
  63. package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  64. package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +9 -10
  65. package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +5 -7
  66. package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  67. package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +1 -2
  68. package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +9 -10
  69. package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  70. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +10 -11
  71. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +4 -34
  72. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +11 -11
  73. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +33 -28
  74. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +9 -10
  75. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +2 -3
  76. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +2 -3
  77. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +2 -3
  78. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +2 -3
  79. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +2 -3
  80. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +2 -3
  81. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +2 -3
  82. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +2 -3
  83. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +2 -3
  84. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +2 -3
  85. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +2 -3
  86. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +2 -3
  87. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +2 -3
  88. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +7 -8
  89. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +9 -10
  90. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +4 -5
  91. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +4 -5
  92. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +4 -5
  93. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +4 -5
  94. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +4 -5
  95. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +4 -5
  96. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +4 -5
  97. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +4 -5
  98. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +4 -5
  99. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +4 -5
  100. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +4 -5
  101. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +4 -5
  102. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +4 -5
  103. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +4 -5
  104. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +4 -5
  105. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +4 -5
  106. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +4 -5
  107. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +4 -5
  108. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +4 -5
  109. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +4 -5
  110. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +4 -5
  111. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +4 -5
  112. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +4 -5
  113. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +4 -5
  114. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +4 -5
  115. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +4 -5
  116. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +4 -5
  117. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +8 -11
  118. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +7 -8
  119. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +7 -8
  120. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +3 -7
  121. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +2 -3
  122. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +2 -3
  123. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +5 -6
  124. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +2 -3
  125. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +2 -3
  126. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +2 -3
  127. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +2 -3
  128. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +5 -6
  129. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +10 -10
  130. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +7 -8
  131. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +33 -26
  132. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +4 -27
  133. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +7 -8
  134. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +7 -8
  135. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +5 -6
  136. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +7 -8
  137. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +7 -8
  138. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +10 -11
  139. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +10 -11
  140. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +13 -14
  141. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +11 -11
  142. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +7 -8
  143. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +12 -8
  144. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +8 -7
  145. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +12 -12
  146. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +10 -11
  147. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +12 -12
  148. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +10 -10
  149. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +7 -8
  150. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +7 -8
  151. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +6 -7
  152. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +7 -8
  153. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +7 -8
  154. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +10 -10
  155. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +9 -9
  156. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +12 -13
  157. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +11 -11
  158. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +12 -13
  159. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +6 -7
  160. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +7 -8
  161. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +7 -8
  162. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +6 -7
  163. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +7 -8
  164. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +10 -11
  165. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +1 -2
  166. package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +5 -8
  167. package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +24 -14
  168. package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  169. package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +6 -9
  170. package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +8 -10
  171. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +8 -9
  172. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +8 -9
  173. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +78 -54
  174. package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +11 -10
  175. package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +83 -24
  176. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php +105 -0
  177. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  178. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +4 -70
  179. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +4 -24
  180. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +5 -22
  181. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  182. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  183. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  184. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +4 -73
  185. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +4 -5
  186. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +4 -5
  187. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +4 -5
  188. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +4 -5
  189. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +4 -5
  190. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +4 -5
  191. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +4 -5
  192. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php +15 -0
  193. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +4 -5
  194. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +4 -5
  195. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +30 -26
  196. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +1 -2
  197. package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  198. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  199. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +8 -9
  200. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +10 -11
  201. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +11 -12
  202. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +24 -32
  203. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +17 -17
  204. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +47 -54
  205. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +46 -89
  206. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +17 -10
  207. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +8 -9
  208. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +5 -26
  209. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +12 -12
  210. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +9 -10
  211. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +7 -8
  212. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +9 -10
  213. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +7 -8
  214. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +11 -12
  215. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +17 -13
  216. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +7 -8
  217. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +7 -8
  218. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +19 -15
  219. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +20 -17
  220. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +28 -24
  221. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +7 -8
  222. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +7 -8
  223. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +16 -14
  224. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +7 -8
  225. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +18 -15
  226. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +7 -8
  227. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +13 -10
  228. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +7 -8
  229. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +11 -12
  230. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +4 -5
  231. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +68 -38
  232. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +5 -26
  233. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +8 -9
  234. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +4 -30
  235. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +8 -8
  236. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +9 -10
  237. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +8 -9
  238. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +12 -13
  239. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +9 -10
  240. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +3 -4
  241. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +10 -8
  242. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +11 -12
  243. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +7 -8
  244. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +5 -44
  245. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +16 -16
  246. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +9 -10
  247. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +1 -2
  248. package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +7 -8
  249. package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  250. package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +2 -3
  251. package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +2 -2
  252. package/plugins/nikic/php-parser/lib/PhpParser/Node.php +28 -29
  253. package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +23 -20
  254. package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +177 -84
  255. package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +28 -19
  256. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +156 -160
  257. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +4 -7
  258. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +1 -2
  259. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  260. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +6 -7
  261. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +6 -7
  262. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +37 -28
  263. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +29 -8
  264. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +23 -13
  265. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +59 -7
  266. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +1 -2
  267. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2034 -2141
  268. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2814 -0
  269. package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +9 -3
  270. package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +503 -269
  271. package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +15 -49
  272. package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +171 -0
  273. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +428 -339
  274. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  275. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +563 -445
  276. package/plugins/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  277. package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +68 -0
  278. package/plugins/rubyastgen/Gemfile +3 -2
  279. package/plugins/rubyastgen/Gemfile.lock +10 -5
  280. package/plugins/rubyastgen/bundle/bundler/setup.rb +4 -2
  281. package/plugins/rubyastgen/bundle/ruby/3.4.0/bin/bundle +29 -0
  282. package/plugins/rubyastgen/bundle/ruby/3.4.0/bin/bundler +29 -0
  283. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/Gemfile +2 -1
  284. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/README.md +7 -4
  285. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-8738b155eb4f/bin/console +11 -0
  286. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-8738b155eb4f/exe/ruby_ast_gen +60 -0
  287. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/lib/ruby_ast_gen/node_handling.rb +49 -31
  288. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/lib/ruby_ast_gen/version.rb +1 -1
  289. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/lib/ruby_ast_gen.rb +24 -10
  290. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/ruby_ast_gen.gemspec +4 -4
  291. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-8738b155eb4f/spec/ruby_ast_gen_spec.rb +299 -0
  292. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/update_version.rb +6 -5
  293. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/gem.build_complete +0 -0
  294. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/gem_make.out +44 -0
  295. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/mkmf.log +74 -0
  296. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/prism/prism.so +0 -0
  297. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/gem_make.out +6 -6
  298. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/racc/cparse.so +0 -0
  299. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/CHANGELOG.md +5239 -0
  300. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/LICENSE.md +22 -0
  301. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/README.md +58 -0
  302. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/bundler.gemspec +46 -0
  303. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/exe/bundle +29 -0
  304. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/exe/bundler +4 -0
  305. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/.document +1 -0
  306. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/build_metadata.rb +45 -0
  307. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/capistrano.rb +22 -0
  308. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/checksum.rb +264 -0
  309. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ci_detector.rb +75 -0
  310. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/add.rb +49 -0
  311. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/binstubs.rb +57 -0
  312. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/cache.rb +43 -0
  313. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/check.rb +40 -0
  314. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/clean.rb +25 -0
  315. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/common.rb +138 -0
  316. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/config.rb +204 -0
  317. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/console.rb +42 -0
  318. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/doctor.rb +161 -0
  319. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/exec.rb +89 -0
  320. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/fund.rb +36 -0
  321. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/gem.rb +467 -0
  322. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/info.rb +83 -0
  323. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/init.rb +51 -0
  324. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/inject.rb +60 -0
  325. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/install.rb +199 -0
  326. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/issue.rb +41 -0
  327. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/list.rb +66 -0
  328. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/lock.rb +94 -0
  329. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/open.rb +29 -0
  330. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/outdated.rb +297 -0
  331. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/platform.rb +48 -0
  332. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/plugin.rb +35 -0
  333. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/pristine.rb +60 -0
  334. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/remove.rb +17 -0
  335. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/show.rb +75 -0
  336. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/update.rb +123 -0
  337. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/viz.rb +31 -0
  338. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli.rb +799 -0
  339. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/cache.rb +96 -0
  340. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/cache_file.rb +148 -0
  341. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/parser.rb +84 -0
  342. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/updater.rb +105 -0
  343. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client.rb +97 -0
  344. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/constants.rb +14 -0
  345. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/current_ruby.rb +82 -0
  346. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/definition.rb +1170 -0
  347. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/dependency.rb +151 -0
  348. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/deployment.rb +69 -0
  349. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/deprecate.rb +44 -0
  350. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/digest.rb +71 -0
  351. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/dsl.rb +638 -0
  352. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/endpoint_specification.rb +174 -0
  353. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/env.rb +148 -0
  354. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/environment_preserver.rb +68 -0
  355. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/errors.rb +281 -0
  356. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/feature_flag.rb +50 -0
  357. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/base.rb +52 -0
  358. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/compact_index.rb +120 -0
  359. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/dependency.rb +78 -0
  360. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/downloader.rb +91 -0
  361. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  362. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/index.rb +25 -0
  363. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher.rb +331 -0
  364. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/force_platform.rb +16 -0
  365. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/friendly_errors.rb +126 -0
  366. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_helper.rb +237 -0
  367. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_helpers.rb +144 -0
  368. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_tasks.rb +7 -0
  369. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_version_promoter.rb +147 -0
  370. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/graph.rb +152 -0
  371. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/index.rb +205 -0
  372. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/injector.rb +285 -0
  373. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/inline.rb +98 -0
  374. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer/gem_installer.rb +85 -0
  375. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer/parallel_installer.rb +203 -0
  376. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer/standalone.rb +113 -0
  377. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer.rb +243 -0
  378. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/lazy_specification.rb +234 -0
  379. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/lockfile_generator.rb +104 -0
  380. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/lockfile_parser.rb +300 -0
  381. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/.document +1 -0
  382. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-add.1 +76 -0
  383. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-add.1.ronn +87 -0
  384. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-binstubs.1 +33 -0
  385. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-binstubs.1.ronn +44 -0
  386. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-cache.1 +68 -0
  387. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-cache.1.ronn +108 -0
  388. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-check.1 +24 -0
  389. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-check.1.ronn +31 -0
  390. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-clean.1 +17 -0
  391. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-clean.1.ronn +18 -0
  392. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-config.1 +317 -0
  393. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-config.1.ronn +408 -0
  394. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-console.1 +33 -0
  395. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-console.1.ronn +39 -0
  396. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-doctor.1 +30 -0
  397. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-doctor.1.ronn +33 -0
  398. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-env.1 +9 -0
  399. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-env.1.ronn +10 -0
  400. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-exec.1 +107 -0
  401. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-exec.1.ronn +154 -0
  402. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-fund.1 +22 -0
  403. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-fund.1.ronn +25 -0
  404. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-gem.1 +87 -0
  405. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-gem.1.ronn +149 -0
  406. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-help.1 +9 -0
  407. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-help.1.ronn +12 -0
  408. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-info.1 +17 -0
  409. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-info.1.ronn +21 -0
  410. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-init.1 +20 -0
  411. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-init.1.ronn +32 -0
  412. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-inject.1 +31 -0
  413. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-inject.1.ronn +32 -0
  414. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-install.1 +218 -0
  415. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-install.1.ronn +387 -0
  416. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-issue.1 +45 -0
  417. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-issue.1.ronn +37 -0
  418. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-licenses.1 +9 -0
  419. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  420. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-list.1 +35 -0
  421. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-list.1.ronn +36 -0
  422. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-lock.1 +75 -0
  423. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-lock.1.ronn +115 -0
  424. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-open.1 +32 -0
  425. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-open.1.ronn +28 -0
  426. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-outdated.1 +103 -0
  427. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-outdated.1.ronn +110 -0
  428. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-platform.1 +49 -0
  429. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-platform.1.ronn +49 -0
  430. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-plugin.1 +58 -0
  431. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-plugin.1.ronn +63 -0
  432. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-pristine.1 +23 -0
  433. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-pristine.1.ronn +34 -0
  434. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-remove.1 +21 -0
  435. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-remove.1.ronn +23 -0
  436. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-show.1 +19 -0
  437. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-show.1.ronn +25 -0
  438. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-update.1 +281 -0
  439. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-update.1.ronn +359 -0
  440. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-version.1 +22 -0
  441. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-version.1.ronn +24 -0
  442. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-viz.1 +30 -0
  443. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-viz.1.ronn +36 -0
  444. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle.1 +102 -0
  445. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle.1.ronn +116 -0
  446. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/gemfile.5 +472 -0
  447. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/gemfile.5.ronn +558 -0
  448. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/index.txt +33 -0
  449. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/match_metadata.rb +30 -0
  450. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/match_platform.rb +23 -0
  451. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/match_remote_metadata.rb +29 -0
  452. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/materialization.rb +59 -0
  453. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/mirror.rb +221 -0
  454. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/api/source.rb +322 -0
  455. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/api.rb +81 -0
  456. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/dsl.rb +53 -0
  457. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/events.rb +85 -0
  458. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/index.rb +197 -0
  459. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer/git.rb +34 -0
  460. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer/path.rb +26 -0
  461. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer/rubygems.rb +19 -0
  462. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer.rb +132 -0
  463. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/source_list.rb +31 -0
  464. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin.rb +378 -0
  465. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/process_lock.rb +20 -0
  466. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/remote_specification.rb +126 -0
  467. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/base.rb +118 -0
  468. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/candidate.rb +85 -0
  469. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/incompatibility.rb +15 -0
  470. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/package.rb +94 -0
  471. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/root.rb +25 -0
  472. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/spec_group.rb +74 -0
  473. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/strategy.rb +40 -0
  474. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver.rb +522 -0
  475. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/retry.rb +66 -0
  476. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ruby_dsl.rb +62 -0
  477. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ruby_version.rb +137 -0
  478. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/rubygems_ext.rb +485 -0
  479. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/rubygems_gem_installer.rb +172 -0
  480. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/rubygems_integration.rb +455 -0
  481. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/runtime.rb +320 -0
  482. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/safe_marshal.rb +31 -0
  483. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/self_manager.rb +206 -0
  484. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/settings/validator.rb +102 -0
  485. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/settings.rb +599 -0
  486. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/setup.rb +39 -0
  487. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/shared_helpers.rb +398 -0
  488. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/similarity_detector.rb +63 -0
  489. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/gemspec.rb +15 -0
  490. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/git/git_proxy.rb +472 -0
  491. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/git.rb +452 -0
  492. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/metadata.rb +63 -0
  493. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/path/installer.rb +53 -0
  494. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/path.rb +250 -0
  495. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/rubygems/remote.rb +76 -0
  496. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/rubygems.rb +522 -0
  497. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/rubygems_aggregate.rb +68 -0
  498. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source.rb +118 -0
  499. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source_list.rb +273 -0
  500. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source_map.rb +71 -0
  501. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/spec_set.rb +367 -0
  502. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/stub_specification.rb +146 -0
  503. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/.document +1 -0
  504. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Executable +27 -0
  505. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Executable.bundler +109 -0
  506. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Executable.standalone +14 -0
  507. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Gemfile +5 -0
  508. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  509. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +132 -0
  510. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  511. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/Gemfile.tt +24 -0
  512. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
  513. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/README.md.tt +49 -0
  514. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/Rakefile.tt +67 -0
  515. package/plugins/rubyastgen/bundle/ruby/3.4.0/{bundler/gems/ruby_ast_gen-2a9186207494/bin/console → gems/bundler-2.6.7/lib/bundler/templates/newgem/bin/console.tt} +1 -1
  516. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1/bin/setup → bundler-2.6.7/lib/bundler/templates/newgem/bin/setup.tt} +0 -0
  517. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  518. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
  519. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  520. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  521. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  522. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
  523. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
  524. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  525. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  526. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/gitignore.tt +23 -0
  527. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  528. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +9 -0
  529. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/lib/newgem.rb.tt +15 -0
  530. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/newgem.gemspec.tt +52 -0
  531. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/rspec.tt +3 -0
  532. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/rubocop.yml.tt +8 -0
  533. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  534. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +11 -0
  535. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -0
  536. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  537. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  538. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +13 -0
  539. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  540. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  541. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui/rg_proxy.rb +19 -0
  542. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui/shell.rb +187 -0
  543. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui/silent.rb +96 -0
  544. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui.rb +9 -0
  545. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/uri_credentials_filter.rb +43 -0
  546. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/uri_normalizer.rb +23 -0
  547. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/.document +1 -0
  548. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/.document +1 -0
  549. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  550. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +224 -0
  551. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  552. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  553. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +186 -0
  554. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/fileutils/.document +1 -0
  555. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/fileutils/lib/fileutils.rb +2696 -0
  556. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/.document +1 -0
  557. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  558. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +41 -0
  559. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -0
  560. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  561. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1111 -0
  562. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/.document +1 -0
  563. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  564. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  565. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +169 -0
  566. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  567. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  568. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  569. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  570. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  571. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  572. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
  573. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
  574. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  575. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  576. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  577. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +423 -0
  578. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +236 -0
  579. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  580. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  581. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/securerandom/.document +1 -0
  582. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/securerandom/COPYING +56 -0
  583. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
  584. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/.document +1 -0
  585. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/LICENSE.md +20 -0
  586. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
  587. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
  588. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
  589. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
  590. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +371 -0
  591. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
  592. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
  593. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
  594. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
  595. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
  596. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
  597. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/group.rb +292 -0
  598. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
  599. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
  600. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
  601. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
  602. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  603. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +86 -0
  604. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
  605. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
  606. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/options.rb +294 -0
  607. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
  608. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
  609. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
  610. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +388 -0
  611. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/color.rb +112 -0
  612. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  613. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/html.rb +81 -0
  614. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +118 -0
  615. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  616. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  617. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
  618. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
  619. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
  620. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor.rb +674 -0
  621. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/tsort/.document +1 -0
  622. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  623. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  624. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/.document +1 -0
  625. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/COPYING +56 -0
  626. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/common.rb +880 -0
  627. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  628. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  629. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/generic.rb +1579 -0
  630. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  631. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  632. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  633. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  634. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  635. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  636. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
  637. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  638. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  639. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  640. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  641. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_fileutils.rb +4 -0
  642. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_net_http.rb +23 -0
  643. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_persistent.rb +11 -0
  644. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_pub_grub.rb +4 -0
  645. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_securerandom.rb +12 -0
  646. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_thor.rb +8 -0
  647. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_timeout.rb +12 -0
  648. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_tsort.rb +4 -0
  649. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_uri.rb +21 -0
  650. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/version.rb +13 -0
  651. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vlad.rb +17 -0
  652. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/worker.rb +117 -0
  653. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/yaml_serializer.rb +98 -0
  654. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler.rb +701 -0
  655. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/ostruct-0.6.3/COPYING +56 -0
  656. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/ostruct-0.6.3/bin/setup +8 -0
  657. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/lib/ostruct.rb +5 -2
  658. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/ostruct.gemspec +2 -0
  659. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/BSDmakefile +58 -0
  660. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/CHANGELOG.md +684 -0
  661. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/CODE_OF_CONDUCT.md +76 -0
  662. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/CONTRIBUTING.md +58 -0
  663. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/LICENSE.md +7 -0
  664. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/Makefile +108 -0
  665. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/README.md +141 -0
  666. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/config.yml +4486 -0
  667. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/build_system.md +119 -0
  668. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/configuration.md +68 -0
  669. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/cruby_compilation.md +27 -0
  670. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/design.md +53 -0
  671. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/encoding.md +121 -0
  672. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/fuzzing.md +88 -0
  673. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/heredocs.md +36 -0
  674. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/javascript.md +118 -0
  675. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/local_variable_depth.md +229 -0
  676. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/mapping.md +117 -0
  677. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/parser_translation.md +39 -0
  678. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/parsing_rules.md +22 -0
  679. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/releasing.md +96 -0
  680. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/relocation.md +34 -0
  681. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/ripper_translation.md +72 -0
  682. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/ruby_api.md +44 -0
  683. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/ruby_parser_translation.md +19 -0
  684. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/serialization.md +233 -0
  685. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/testing.md +55 -0
  686. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/Makefile +273 -0
  687. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/api_node.c +6939 -0
  688. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/api_pack.c +276 -0
  689. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/extconf.rb +127 -0
  690. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/extension.c +1406 -0
  691. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/extension.h +19 -0
  692. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/ast.h +7964 -0
  693. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/defines.h +260 -0
  694. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/diagnostic.h +451 -0
  695. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/encoding.h +283 -0
  696. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/node.h +129 -0
  697. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/options.h +442 -0
  698. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/pack.h +163 -0
  699. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/parser.h +933 -0
  700. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/prettyprint.h +34 -0
  701. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/regexp.h +43 -0
  702. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/static_literals.h +121 -0
  703. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_buffer.h +228 -0
  704. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_char.h +204 -0
  705. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_constant_pool.h +218 -0
  706. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_integer.h +126 -0
  707. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_list.h +97 -0
  708. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_memchr.h +29 -0
  709. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_newline_list.h +113 -0
  710. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_string.h +190 -0
  711. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_strncasecmp.h +32 -0
  712. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_strpbrk.h +46 -0
  713. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/version.h +29 -0
  714. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism.h +383 -0
  715. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/compiler.rb +496 -0
  716. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/desugar_compiler.rb +391 -0
  717. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/dispatcher.rb +2194 -0
  718. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/dot_visitor.rb +4758 -0
  719. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/dsl.rb +1000 -0
  720. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/ffi.rb +560 -0
  721. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/inspect_visitor.rb +2389 -0
  722. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/lex_compat.rb +927 -0
  723. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/mutation_compiler.rb +769 -0
  724. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/node.rb +18645 -0
  725. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/node_ext.rb +508 -0
  726. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/pack.rb +228 -0
  727. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result/comments.rb +187 -0
  728. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result/errors.rb +65 -0
  729. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result/newlines.rb +154 -0
  730. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result.rb +910 -0
  731. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/pattern.rb +268 -0
  732. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/polyfill/append_as_bytes.rb +15 -0
  733. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/polyfill/byteindex.rb +13 -0
  734. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/polyfill/unpack1.rb +14 -0
  735. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/prism.so +0 -0
  736. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/reflection.rb +413 -0
  737. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/relocation.rb +504 -0
  738. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/serialize.rb +2392 -0
  739. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/string_query.rb +30 -0
  740. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser/builder.rb +61 -0
  741. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser/compiler.rb +2212 -0
  742. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser/lexer.rb +812 -0
  743. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser.rb +355 -0
  744. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser33.rb +12 -0
  745. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser34.rb +12 -0
  746. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser35.rb +12 -0
  747. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ripper/sexp.rb +125 -0
  748. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ripper/shim.rb +5 -0
  749. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ripper.rb +3458 -0
  750. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ruby_parser.rb +1646 -0
  751. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation.rb +14 -0
  752. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/visitor.rb +508 -0
  753. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism.rb +89 -0
  754. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/prism.gemspec +170 -0
  755. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/compiler.rbi +12 -0
  756. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/dsl.rbi +524 -0
  757. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/inspect_visitor.rbi +12 -0
  758. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/node.rbi +8722 -0
  759. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/node_ext.rbi +107 -0
  760. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/parse_result.rbi +404 -0
  761. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/reflection.rbi +58 -0
  762. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/string_query.rbi +12 -0
  763. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser.rbi +11 -0
  764. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser33.rbi +6 -0
  765. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser34.rbi +6 -0
  766. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser35.rbi +6 -0
  767. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/ripper.rbi +15 -0
  768. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/visitor.rbi +473 -0
  769. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism.rbi +66 -0
  770. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/compiler.rbs +9 -0
  771. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/dispatcher.rbs +16 -0
  772. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/dot_visitor.rbs +6 -0
  773. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/dsl.rbs +351 -0
  774. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/inspect_visitor.rbs +22 -0
  775. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/lex_compat.rbs +10 -0
  776. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/mutation_compiler.rbs +159 -0
  777. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/node.rbs +3614 -0
  778. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/node_ext.rbs +82 -0
  779. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/pack.rbs +43 -0
  780. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/parse_result.rbs +192 -0
  781. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/pattern.rbs +13 -0
  782. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/reflection.rbs +50 -0
  783. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/relocation.rbs +185 -0
  784. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/serialize.rbs +8 -0
  785. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/string_query.rbs +11 -0
  786. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/visitor.rbs +169 -0
  787. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism.rbs +254 -0
  788. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/diagnostic.c +842 -0
  789. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/encoding.c +5235 -0
  790. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/node.c +8674 -0
  791. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/options.c +328 -0
  792. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/pack.c +509 -0
  793. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/prettyprint.c +8939 -0
  794. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/prism.c +23184 -0
  795. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/regexp.c +790 -0
  796. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/serialize.c +2266 -0
  797. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/static_literals.c +617 -0
  798. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/token_type.c +701 -0
  799. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_buffer.c +357 -0
  800. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_char.c +318 -0
  801. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_constant_pool.c +342 -0
  802. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_integer.c +670 -0
  803. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_list.c +49 -0
  804. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_memchr.c +35 -0
  805. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_newline_list.c +125 -0
  806. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_string.c +383 -0
  807. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_strncasecmp.c +36 -0
  808. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_strpbrk.c +206 -0
  809. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/ext/racc/cparse/Makefile +3 -3
  810. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
  811. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/ast-2.4.3.gemspec +1 -1
  812. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/bundler-2.6.7.gemspec +25 -0
  813. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/{ostruct-0.6.1.gemspec → ostruct-0.6.3.gemspec} +5 -4
  814. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/parser-3.3.8.0.gemspec +1 -1
  815. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/prism-1.4.0.gemspec +24 -0
  816. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/racc-1.8.1.gemspec +1 -1
  817. package/rbastgen.js +1 -1
  818. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php +0 -47
  819. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php +0 -76
  820. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php +0 -23
  821. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php +0 -105
  822. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php +0 -30
  823. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Multiple.php +0 -55
  824. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php5.php +0 -2682
  825. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Tokens.php +0 -148
  826. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-2a9186207494/exe/ruby_ast_gen +0 -59
  827. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-2a9186207494/spec/ruby_ast_gen_spec.rb +0 -175
  828. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/.rspec +0 -0
  829. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/LICENSE.txt +0 -0
  830. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/Rakefile +0 -0
  831. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/bin/setup +0 -0
  832. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/spec/spec_helper.rb +0 -0
  833. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → bundler-2.6.7/lib/bundler/vendor/fileutils}/COPYING +0 -0
  834. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/BSDL +0 -0
  835. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/Gemfile +0 -0
  836. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/README.md +0 -0
  837. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/Rakefile +0 -0
  838. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/bin/console +0 -0
@@ -0,0 +1,4758 @@
1
+ # frozen_string_literal: true
2
+
3
+ =begin
4
+ This file is generated by the templates/template.rb script and should not be
5
+ modified manually. See templates/lib/prism/dot_visitor.rb.erb
6
+ if you are looking to modify the template
7
+ =end
8
+
9
+ require "cgi"
10
+
11
+ module Prism
12
+ # This visitor provides the ability to call Node#to_dot, which converts a
13
+ # subtree into a graphviz dot graph.
14
+ class DotVisitor < Visitor
15
+ class Field # :nodoc:
16
+ attr_reader :name, :value, :port
17
+
18
+ def initialize(name, value, port)
19
+ @name = name
20
+ @value = value
21
+ @port = port
22
+ end
23
+
24
+ def to_dot
25
+ if port
26
+ "<tr><td align=\"left\" colspan=\"2\" port=\"#{name}\">#{name}</td></tr>"
27
+ else
28
+ "<tr><td align=\"left\">#{name}</td><td>#{CGI.escapeHTML(value || raise)}</td></tr>"
29
+ end
30
+ end
31
+ end
32
+
33
+ class Table # :nodoc:
34
+ attr_reader :name, :fields
35
+
36
+ def initialize(name)
37
+ @name = name
38
+ @fields = []
39
+ end
40
+
41
+ def field(name, value = nil, port: false)
42
+ fields << Field.new(name, value, port)
43
+ end
44
+
45
+ def to_dot
46
+ dot = <<~DOT
47
+ <table border="0" cellborder="1" cellspacing="0" cellpadding="4">
48
+ <tr><td colspan="2"><b>#{name}</b></td></tr>
49
+ DOT
50
+
51
+ if fields.any?
52
+ "#{dot} #{fields.map(&:to_dot).join("\n ")}\n</table>"
53
+ else
54
+ "#{dot}</table>"
55
+ end
56
+ end
57
+ end
58
+
59
+ class Digraph # :nodoc:
60
+ attr_reader :nodes, :waypoints, :edges
61
+
62
+ def initialize
63
+ @nodes = []
64
+ @waypoints = []
65
+ @edges = []
66
+ end
67
+
68
+ def node(value)
69
+ nodes << value
70
+ end
71
+
72
+ def waypoint(value)
73
+ waypoints << value
74
+ end
75
+
76
+ def edge(value)
77
+ edges << value
78
+ end
79
+
80
+ def to_dot
81
+ <<~DOT
82
+ digraph "Prism" {
83
+ node [
84
+ fontname=\"Courier New\"
85
+ shape=plain
86
+ style=filled
87
+ fillcolor=gray95
88
+ ];
89
+
90
+ #{nodes.map { |node| node.gsub(/\n/, "\n ") }.join("\n ")}
91
+ node [shape=point];
92
+ #{waypoints.join("\n ")}
93
+
94
+ #{edges.join("\n ")}
95
+ }
96
+ DOT
97
+ end
98
+ end
99
+
100
+ private_constant :Field, :Table, :Digraph
101
+
102
+ # The digraph that is being built.
103
+ attr_reader :digraph
104
+
105
+ # Initialize a new dot visitor.
106
+ def initialize
107
+ @digraph = Digraph.new
108
+ end
109
+
110
+ # Convert this visitor into a graphviz dot graph string.
111
+ def to_dot
112
+ digraph.to_dot
113
+ end
114
+
115
+ # Visit a AliasGlobalVariableNode node.
116
+ def visit_alias_global_variable_node(node)
117
+ table = Table.new("AliasGlobalVariableNode")
118
+ id = node_id(node)
119
+
120
+ # new_name
121
+ table.field("new_name", port: true)
122
+ digraph.edge("#{id}:new_name -> #{node_id(node.new_name)};")
123
+
124
+ # old_name
125
+ table.field("old_name", port: true)
126
+ digraph.edge("#{id}:old_name -> #{node_id(node.old_name)};")
127
+
128
+ # keyword_loc
129
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
130
+
131
+ digraph.nodes << <<~DOT
132
+ #{id} [
133
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
134
+ ];
135
+ DOT
136
+
137
+ super
138
+ end
139
+
140
+ # Visit a AliasMethodNode node.
141
+ def visit_alias_method_node(node)
142
+ table = Table.new("AliasMethodNode")
143
+ id = node_id(node)
144
+
145
+ # new_name
146
+ table.field("new_name", port: true)
147
+ digraph.edge("#{id}:new_name -> #{node_id(node.new_name)};")
148
+
149
+ # old_name
150
+ table.field("old_name", port: true)
151
+ digraph.edge("#{id}:old_name -> #{node_id(node.old_name)};")
152
+
153
+ # keyword_loc
154
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
155
+
156
+ digraph.nodes << <<~DOT
157
+ #{id} [
158
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
159
+ ];
160
+ DOT
161
+
162
+ super
163
+ end
164
+
165
+ # Visit a AlternationPatternNode node.
166
+ def visit_alternation_pattern_node(node)
167
+ table = Table.new("AlternationPatternNode")
168
+ id = node_id(node)
169
+
170
+ # left
171
+ table.field("left", port: true)
172
+ digraph.edge("#{id}:left -> #{node_id(node.left)};")
173
+
174
+ # right
175
+ table.field("right", port: true)
176
+ digraph.edge("#{id}:right -> #{node_id(node.right)};")
177
+
178
+ # operator_loc
179
+ table.field("operator_loc", location_inspect(node.operator_loc))
180
+
181
+ digraph.nodes << <<~DOT
182
+ #{id} [
183
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
184
+ ];
185
+ DOT
186
+
187
+ super
188
+ end
189
+
190
+ # Visit a AndNode node.
191
+ def visit_and_node(node)
192
+ table = Table.new("AndNode")
193
+ id = node_id(node)
194
+
195
+ # left
196
+ table.field("left", port: true)
197
+ digraph.edge("#{id}:left -> #{node_id(node.left)};")
198
+
199
+ # right
200
+ table.field("right", port: true)
201
+ digraph.edge("#{id}:right -> #{node_id(node.right)};")
202
+
203
+ # operator_loc
204
+ table.field("operator_loc", location_inspect(node.operator_loc))
205
+
206
+ digraph.nodes << <<~DOT
207
+ #{id} [
208
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
209
+ ];
210
+ DOT
211
+
212
+ super
213
+ end
214
+
215
+ # Visit a ArgumentsNode node.
216
+ def visit_arguments_node(node)
217
+ table = Table.new("ArgumentsNode")
218
+ id = node_id(node)
219
+
220
+ # flags
221
+ table.field("flags", arguments_node_flags_inspect(node))
222
+
223
+ # arguments
224
+ if node.arguments.any?
225
+ table.field("arguments", port: true)
226
+
227
+ waypoint = "#{id}_arguments"
228
+ digraph.waypoint("#{waypoint};")
229
+
230
+ digraph.edge("#{id}:arguments -> #{waypoint};")
231
+ node.arguments.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
232
+ else
233
+ table.field("arguments", "[]")
234
+ end
235
+
236
+ digraph.nodes << <<~DOT
237
+ #{id} [
238
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
239
+ ];
240
+ DOT
241
+
242
+ super
243
+ end
244
+
245
+ # Visit a ArrayNode node.
246
+ def visit_array_node(node)
247
+ table = Table.new("ArrayNode")
248
+ id = node_id(node)
249
+
250
+ # flags
251
+ table.field("flags", array_node_flags_inspect(node))
252
+
253
+ # elements
254
+ if node.elements.any?
255
+ table.field("elements", port: true)
256
+
257
+ waypoint = "#{id}_elements"
258
+ digraph.waypoint("#{waypoint};")
259
+
260
+ digraph.edge("#{id}:elements -> #{waypoint};")
261
+ node.elements.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
262
+ else
263
+ table.field("elements", "[]")
264
+ end
265
+
266
+ # opening_loc
267
+ unless (opening_loc = node.opening_loc).nil?
268
+ table.field("opening_loc", location_inspect(opening_loc))
269
+ end
270
+
271
+ # closing_loc
272
+ unless (closing_loc = node.closing_loc).nil?
273
+ table.field("closing_loc", location_inspect(closing_loc))
274
+ end
275
+
276
+ digraph.nodes << <<~DOT
277
+ #{id} [
278
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
279
+ ];
280
+ DOT
281
+
282
+ super
283
+ end
284
+
285
+ # Visit a ArrayPatternNode node.
286
+ def visit_array_pattern_node(node)
287
+ table = Table.new("ArrayPatternNode")
288
+ id = node_id(node)
289
+
290
+ # constant
291
+ unless (constant = node.constant).nil?
292
+ table.field("constant", port: true)
293
+ digraph.edge("#{id}:constant -> #{node_id(constant)};")
294
+ end
295
+
296
+ # requireds
297
+ if node.requireds.any?
298
+ table.field("requireds", port: true)
299
+
300
+ waypoint = "#{id}_requireds"
301
+ digraph.waypoint("#{waypoint};")
302
+
303
+ digraph.edge("#{id}:requireds -> #{waypoint};")
304
+ node.requireds.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
305
+ else
306
+ table.field("requireds", "[]")
307
+ end
308
+
309
+ # rest
310
+ unless (rest = node.rest).nil?
311
+ table.field("rest", port: true)
312
+ digraph.edge("#{id}:rest -> #{node_id(rest)};")
313
+ end
314
+
315
+ # posts
316
+ if node.posts.any?
317
+ table.field("posts", port: true)
318
+
319
+ waypoint = "#{id}_posts"
320
+ digraph.waypoint("#{waypoint};")
321
+
322
+ digraph.edge("#{id}:posts -> #{waypoint};")
323
+ node.posts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
324
+ else
325
+ table.field("posts", "[]")
326
+ end
327
+
328
+ # opening_loc
329
+ unless (opening_loc = node.opening_loc).nil?
330
+ table.field("opening_loc", location_inspect(opening_loc))
331
+ end
332
+
333
+ # closing_loc
334
+ unless (closing_loc = node.closing_loc).nil?
335
+ table.field("closing_loc", location_inspect(closing_loc))
336
+ end
337
+
338
+ digraph.nodes << <<~DOT
339
+ #{id} [
340
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
341
+ ];
342
+ DOT
343
+
344
+ super
345
+ end
346
+
347
+ # Visit a AssocNode node.
348
+ def visit_assoc_node(node)
349
+ table = Table.new("AssocNode")
350
+ id = node_id(node)
351
+
352
+ # key
353
+ table.field("key", port: true)
354
+ digraph.edge("#{id}:key -> #{node_id(node.key)};")
355
+
356
+ # value
357
+ table.field("value", port: true)
358
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
359
+
360
+ # operator_loc
361
+ unless (operator_loc = node.operator_loc).nil?
362
+ table.field("operator_loc", location_inspect(operator_loc))
363
+ end
364
+
365
+ digraph.nodes << <<~DOT
366
+ #{id} [
367
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
368
+ ];
369
+ DOT
370
+
371
+ super
372
+ end
373
+
374
+ # Visit a AssocSplatNode node.
375
+ def visit_assoc_splat_node(node)
376
+ table = Table.new("AssocSplatNode")
377
+ id = node_id(node)
378
+
379
+ # value
380
+ unless (value = node.value).nil?
381
+ table.field("value", port: true)
382
+ digraph.edge("#{id}:value -> #{node_id(value)};")
383
+ end
384
+
385
+ # operator_loc
386
+ table.field("operator_loc", location_inspect(node.operator_loc))
387
+
388
+ digraph.nodes << <<~DOT
389
+ #{id} [
390
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
391
+ ];
392
+ DOT
393
+
394
+ super
395
+ end
396
+
397
+ # Visit a BackReferenceReadNode node.
398
+ def visit_back_reference_read_node(node)
399
+ table = Table.new("BackReferenceReadNode")
400
+ id = node_id(node)
401
+
402
+ # name
403
+ table.field("name", node.name.inspect)
404
+
405
+ digraph.nodes << <<~DOT
406
+ #{id} [
407
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
408
+ ];
409
+ DOT
410
+
411
+ super
412
+ end
413
+
414
+ # Visit a BeginNode node.
415
+ def visit_begin_node(node)
416
+ table = Table.new("BeginNode")
417
+ id = node_id(node)
418
+
419
+ # begin_keyword_loc
420
+ unless (begin_keyword_loc = node.begin_keyword_loc).nil?
421
+ table.field("begin_keyword_loc", location_inspect(begin_keyword_loc))
422
+ end
423
+
424
+ # statements
425
+ unless (statements = node.statements).nil?
426
+ table.field("statements", port: true)
427
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
428
+ end
429
+
430
+ # rescue_clause
431
+ unless (rescue_clause = node.rescue_clause).nil?
432
+ table.field("rescue_clause", port: true)
433
+ digraph.edge("#{id}:rescue_clause -> #{node_id(rescue_clause)};")
434
+ end
435
+
436
+ # else_clause
437
+ unless (else_clause = node.else_clause).nil?
438
+ table.field("else_clause", port: true)
439
+ digraph.edge("#{id}:else_clause -> #{node_id(else_clause)};")
440
+ end
441
+
442
+ # ensure_clause
443
+ unless (ensure_clause = node.ensure_clause).nil?
444
+ table.field("ensure_clause", port: true)
445
+ digraph.edge("#{id}:ensure_clause -> #{node_id(ensure_clause)};")
446
+ end
447
+
448
+ # end_keyword_loc
449
+ unless (end_keyword_loc = node.end_keyword_loc).nil?
450
+ table.field("end_keyword_loc", location_inspect(end_keyword_loc))
451
+ end
452
+
453
+ digraph.nodes << <<~DOT
454
+ #{id} [
455
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
456
+ ];
457
+ DOT
458
+
459
+ super
460
+ end
461
+
462
+ # Visit a BlockArgumentNode node.
463
+ def visit_block_argument_node(node)
464
+ table = Table.new("BlockArgumentNode")
465
+ id = node_id(node)
466
+
467
+ # expression
468
+ unless (expression = node.expression).nil?
469
+ table.field("expression", port: true)
470
+ digraph.edge("#{id}:expression -> #{node_id(expression)};")
471
+ end
472
+
473
+ # operator_loc
474
+ table.field("operator_loc", location_inspect(node.operator_loc))
475
+
476
+ digraph.nodes << <<~DOT
477
+ #{id} [
478
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
479
+ ];
480
+ DOT
481
+
482
+ super
483
+ end
484
+
485
+ # Visit a BlockLocalVariableNode node.
486
+ def visit_block_local_variable_node(node)
487
+ table = Table.new("BlockLocalVariableNode")
488
+ id = node_id(node)
489
+
490
+ # flags
491
+ table.field("flags", parameter_flags_inspect(node))
492
+
493
+ # name
494
+ table.field("name", node.name.inspect)
495
+
496
+ digraph.nodes << <<~DOT
497
+ #{id} [
498
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
499
+ ];
500
+ DOT
501
+
502
+ super
503
+ end
504
+
505
+ # Visit a BlockNode node.
506
+ def visit_block_node(node)
507
+ table = Table.new("BlockNode")
508
+ id = node_id(node)
509
+
510
+ # locals
511
+ table.field("locals", node.locals.inspect)
512
+
513
+ # parameters
514
+ unless (parameters = node.parameters).nil?
515
+ table.field("parameters", port: true)
516
+ digraph.edge("#{id}:parameters -> #{node_id(parameters)};")
517
+ end
518
+
519
+ # body
520
+ unless (body = node.body).nil?
521
+ table.field("body", port: true)
522
+ digraph.edge("#{id}:body -> #{node_id(body)};")
523
+ end
524
+
525
+ # opening_loc
526
+ table.field("opening_loc", location_inspect(node.opening_loc))
527
+
528
+ # closing_loc
529
+ table.field("closing_loc", location_inspect(node.closing_loc))
530
+
531
+ digraph.nodes << <<~DOT
532
+ #{id} [
533
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
534
+ ];
535
+ DOT
536
+
537
+ super
538
+ end
539
+
540
+ # Visit a BlockParameterNode node.
541
+ def visit_block_parameter_node(node)
542
+ table = Table.new("BlockParameterNode")
543
+ id = node_id(node)
544
+
545
+ # flags
546
+ table.field("flags", parameter_flags_inspect(node))
547
+
548
+ # name
549
+ table.field("name", node.name.inspect)
550
+
551
+ # name_loc
552
+ unless (name_loc = node.name_loc).nil?
553
+ table.field("name_loc", location_inspect(name_loc))
554
+ end
555
+
556
+ # operator_loc
557
+ table.field("operator_loc", location_inspect(node.operator_loc))
558
+
559
+ digraph.nodes << <<~DOT
560
+ #{id} [
561
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
562
+ ];
563
+ DOT
564
+
565
+ super
566
+ end
567
+
568
+ # Visit a BlockParametersNode node.
569
+ def visit_block_parameters_node(node)
570
+ table = Table.new("BlockParametersNode")
571
+ id = node_id(node)
572
+
573
+ # parameters
574
+ unless (parameters = node.parameters).nil?
575
+ table.field("parameters", port: true)
576
+ digraph.edge("#{id}:parameters -> #{node_id(parameters)};")
577
+ end
578
+
579
+ # locals
580
+ if node.locals.any?
581
+ table.field("locals", port: true)
582
+
583
+ waypoint = "#{id}_locals"
584
+ digraph.waypoint("#{waypoint};")
585
+
586
+ digraph.edge("#{id}:locals -> #{waypoint};")
587
+ node.locals.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
588
+ else
589
+ table.field("locals", "[]")
590
+ end
591
+
592
+ # opening_loc
593
+ unless (opening_loc = node.opening_loc).nil?
594
+ table.field("opening_loc", location_inspect(opening_loc))
595
+ end
596
+
597
+ # closing_loc
598
+ unless (closing_loc = node.closing_loc).nil?
599
+ table.field("closing_loc", location_inspect(closing_loc))
600
+ end
601
+
602
+ digraph.nodes << <<~DOT
603
+ #{id} [
604
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
605
+ ];
606
+ DOT
607
+
608
+ super
609
+ end
610
+
611
+ # Visit a BreakNode node.
612
+ def visit_break_node(node)
613
+ table = Table.new("BreakNode")
614
+ id = node_id(node)
615
+
616
+ # arguments
617
+ unless (arguments = node.arguments).nil?
618
+ table.field("arguments", port: true)
619
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
620
+ end
621
+
622
+ # keyword_loc
623
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
624
+
625
+ digraph.nodes << <<~DOT
626
+ #{id} [
627
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
628
+ ];
629
+ DOT
630
+
631
+ super
632
+ end
633
+
634
+ # Visit a CallAndWriteNode node.
635
+ def visit_call_and_write_node(node)
636
+ table = Table.new("CallAndWriteNode")
637
+ id = node_id(node)
638
+
639
+ # flags
640
+ table.field("flags", call_node_flags_inspect(node))
641
+
642
+ # receiver
643
+ unless (receiver = node.receiver).nil?
644
+ table.field("receiver", port: true)
645
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
646
+ end
647
+
648
+ # call_operator_loc
649
+ unless (call_operator_loc = node.call_operator_loc).nil?
650
+ table.field("call_operator_loc", location_inspect(call_operator_loc))
651
+ end
652
+
653
+ # message_loc
654
+ unless (message_loc = node.message_loc).nil?
655
+ table.field("message_loc", location_inspect(message_loc))
656
+ end
657
+
658
+ # read_name
659
+ table.field("read_name", node.read_name.inspect)
660
+
661
+ # write_name
662
+ table.field("write_name", node.write_name.inspect)
663
+
664
+ # operator_loc
665
+ table.field("operator_loc", location_inspect(node.operator_loc))
666
+
667
+ # value
668
+ table.field("value", port: true)
669
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
670
+
671
+ digraph.nodes << <<~DOT
672
+ #{id} [
673
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
674
+ ];
675
+ DOT
676
+
677
+ super
678
+ end
679
+
680
+ # Visit a CallNode node.
681
+ def visit_call_node(node)
682
+ table = Table.new("CallNode")
683
+ id = node_id(node)
684
+
685
+ # flags
686
+ table.field("flags", call_node_flags_inspect(node))
687
+
688
+ # receiver
689
+ unless (receiver = node.receiver).nil?
690
+ table.field("receiver", port: true)
691
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
692
+ end
693
+
694
+ # call_operator_loc
695
+ unless (call_operator_loc = node.call_operator_loc).nil?
696
+ table.field("call_operator_loc", location_inspect(call_operator_loc))
697
+ end
698
+
699
+ # name
700
+ table.field("name", node.name.inspect)
701
+
702
+ # message_loc
703
+ unless (message_loc = node.message_loc).nil?
704
+ table.field("message_loc", location_inspect(message_loc))
705
+ end
706
+
707
+ # opening_loc
708
+ unless (opening_loc = node.opening_loc).nil?
709
+ table.field("opening_loc", location_inspect(opening_loc))
710
+ end
711
+
712
+ # arguments
713
+ unless (arguments = node.arguments).nil?
714
+ table.field("arguments", port: true)
715
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
716
+ end
717
+
718
+ # closing_loc
719
+ unless (closing_loc = node.closing_loc).nil?
720
+ table.field("closing_loc", location_inspect(closing_loc))
721
+ end
722
+
723
+ # block
724
+ unless (block = node.block).nil?
725
+ table.field("block", port: true)
726
+ digraph.edge("#{id}:block -> #{node_id(block)};")
727
+ end
728
+
729
+ digraph.nodes << <<~DOT
730
+ #{id} [
731
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
732
+ ];
733
+ DOT
734
+
735
+ super
736
+ end
737
+
738
+ # Visit a CallOperatorWriteNode node.
739
+ def visit_call_operator_write_node(node)
740
+ table = Table.new("CallOperatorWriteNode")
741
+ id = node_id(node)
742
+
743
+ # flags
744
+ table.field("flags", call_node_flags_inspect(node))
745
+
746
+ # receiver
747
+ unless (receiver = node.receiver).nil?
748
+ table.field("receiver", port: true)
749
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
750
+ end
751
+
752
+ # call_operator_loc
753
+ unless (call_operator_loc = node.call_operator_loc).nil?
754
+ table.field("call_operator_loc", location_inspect(call_operator_loc))
755
+ end
756
+
757
+ # message_loc
758
+ unless (message_loc = node.message_loc).nil?
759
+ table.field("message_loc", location_inspect(message_loc))
760
+ end
761
+
762
+ # read_name
763
+ table.field("read_name", node.read_name.inspect)
764
+
765
+ # write_name
766
+ table.field("write_name", node.write_name.inspect)
767
+
768
+ # binary_operator
769
+ table.field("binary_operator", node.binary_operator.inspect)
770
+
771
+ # binary_operator_loc
772
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
773
+
774
+ # value
775
+ table.field("value", port: true)
776
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
777
+
778
+ digraph.nodes << <<~DOT
779
+ #{id} [
780
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
781
+ ];
782
+ DOT
783
+
784
+ super
785
+ end
786
+
787
+ # Visit a CallOrWriteNode node.
788
+ def visit_call_or_write_node(node)
789
+ table = Table.new("CallOrWriteNode")
790
+ id = node_id(node)
791
+
792
+ # flags
793
+ table.field("flags", call_node_flags_inspect(node))
794
+
795
+ # receiver
796
+ unless (receiver = node.receiver).nil?
797
+ table.field("receiver", port: true)
798
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
799
+ end
800
+
801
+ # call_operator_loc
802
+ unless (call_operator_loc = node.call_operator_loc).nil?
803
+ table.field("call_operator_loc", location_inspect(call_operator_loc))
804
+ end
805
+
806
+ # message_loc
807
+ unless (message_loc = node.message_loc).nil?
808
+ table.field("message_loc", location_inspect(message_loc))
809
+ end
810
+
811
+ # read_name
812
+ table.field("read_name", node.read_name.inspect)
813
+
814
+ # write_name
815
+ table.field("write_name", node.write_name.inspect)
816
+
817
+ # operator_loc
818
+ table.field("operator_loc", location_inspect(node.operator_loc))
819
+
820
+ # value
821
+ table.field("value", port: true)
822
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
823
+
824
+ digraph.nodes << <<~DOT
825
+ #{id} [
826
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
827
+ ];
828
+ DOT
829
+
830
+ super
831
+ end
832
+
833
+ # Visit a CallTargetNode node.
834
+ def visit_call_target_node(node)
835
+ table = Table.new("CallTargetNode")
836
+ id = node_id(node)
837
+
838
+ # flags
839
+ table.field("flags", call_node_flags_inspect(node))
840
+
841
+ # receiver
842
+ table.field("receiver", port: true)
843
+ digraph.edge("#{id}:receiver -> #{node_id(node.receiver)};")
844
+
845
+ # call_operator_loc
846
+ table.field("call_operator_loc", location_inspect(node.call_operator_loc))
847
+
848
+ # name
849
+ table.field("name", node.name.inspect)
850
+
851
+ # message_loc
852
+ table.field("message_loc", location_inspect(node.message_loc))
853
+
854
+ digraph.nodes << <<~DOT
855
+ #{id} [
856
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
857
+ ];
858
+ DOT
859
+
860
+ super
861
+ end
862
+
863
+ # Visit a CapturePatternNode node.
864
+ def visit_capture_pattern_node(node)
865
+ table = Table.new("CapturePatternNode")
866
+ id = node_id(node)
867
+
868
+ # value
869
+ table.field("value", port: true)
870
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
871
+
872
+ # target
873
+ table.field("target", port: true)
874
+ digraph.edge("#{id}:target -> #{node_id(node.target)};")
875
+
876
+ # operator_loc
877
+ table.field("operator_loc", location_inspect(node.operator_loc))
878
+
879
+ digraph.nodes << <<~DOT
880
+ #{id} [
881
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
882
+ ];
883
+ DOT
884
+
885
+ super
886
+ end
887
+
888
+ # Visit a CaseMatchNode node.
889
+ def visit_case_match_node(node)
890
+ table = Table.new("CaseMatchNode")
891
+ id = node_id(node)
892
+
893
+ # predicate
894
+ unless (predicate = node.predicate).nil?
895
+ table.field("predicate", port: true)
896
+ digraph.edge("#{id}:predicate -> #{node_id(predicate)};")
897
+ end
898
+
899
+ # conditions
900
+ if node.conditions.any?
901
+ table.field("conditions", port: true)
902
+
903
+ waypoint = "#{id}_conditions"
904
+ digraph.waypoint("#{waypoint};")
905
+
906
+ digraph.edge("#{id}:conditions -> #{waypoint};")
907
+ node.conditions.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
908
+ else
909
+ table.field("conditions", "[]")
910
+ end
911
+
912
+ # else_clause
913
+ unless (else_clause = node.else_clause).nil?
914
+ table.field("else_clause", port: true)
915
+ digraph.edge("#{id}:else_clause -> #{node_id(else_clause)};")
916
+ end
917
+
918
+ # case_keyword_loc
919
+ table.field("case_keyword_loc", location_inspect(node.case_keyword_loc))
920
+
921
+ # end_keyword_loc
922
+ table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
923
+
924
+ digraph.nodes << <<~DOT
925
+ #{id} [
926
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
927
+ ];
928
+ DOT
929
+
930
+ super
931
+ end
932
+
933
+ # Visit a CaseNode node.
934
+ def visit_case_node(node)
935
+ table = Table.new("CaseNode")
936
+ id = node_id(node)
937
+
938
+ # predicate
939
+ unless (predicate = node.predicate).nil?
940
+ table.field("predicate", port: true)
941
+ digraph.edge("#{id}:predicate -> #{node_id(predicate)};")
942
+ end
943
+
944
+ # conditions
945
+ if node.conditions.any?
946
+ table.field("conditions", port: true)
947
+
948
+ waypoint = "#{id}_conditions"
949
+ digraph.waypoint("#{waypoint};")
950
+
951
+ digraph.edge("#{id}:conditions -> #{waypoint};")
952
+ node.conditions.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
953
+ else
954
+ table.field("conditions", "[]")
955
+ end
956
+
957
+ # else_clause
958
+ unless (else_clause = node.else_clause).nil?
959
+ table.field("else_clause", port: true)
960
+ digraph.edge("#{id}:else_clause -> #{node_id(else_clause)};")
961
+ end
962
+
963
+ # case_keyword_loc
964
+ table.field("case_keyword_loc", location_inspect(node.case_keyword_loc))
965
+
966
+ # end_keyword_loc
967
+ table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
968
+
969
+ digraph.nodes << <<~DOT
970
+ #{id} [
971
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
972
+ ];
973
+ DOT
974
+
975
+ super
976
+ end
977
+
978
+ # Visit a ClassNode node.
979
+ def visit_class_node(node)
980
+ table = Table.new("ClassNode")
981
+ id = node_id(node)
982
+
983
+ # locals
984
+ table.field("locals", node.locals.inspect)
985
+
986
+ # class_keyword_loc
987
+ table.field("class_keyword_loc", location_inspect(node.class_keyword_loc))
988
+
989
+ # constant_path
990
+ table.field("constant_path", port: true)
991
+ digraph.edge("#{id}:constant_path -> #{node_id(node.constant_path)};")
992
+
993
+ # inheritance_operator_loc
994
+ unless (inheritance_operator_loc = node.inheritance_operator_loc).nil?
995
+ table.field("inheritance_operator_loc", location_inspect(inheritance_operator_loc))
996
+ end
997
+
998
+ # superclass
999
+ unless (superclass = node.superclass).nil?
1000
+ table.field("superclass", port: true)
1001
+ digraph.edge("#{id}:superclass -> #{node_id(superclass)};")
1002
+ end
1003
+
1004
+ # body
1005
+ unless (body = node.body).nil?
1006
+ table.field("body", port: true)
1007
+ digraph.edge("#{id}:body -> #{node_id(body)};")
1008
+ end
1009
+
1010
+ # end_keyword_loc
1011
+ table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
1012
+
1013
+ # name
1014
+ table.field("name", node.name.inspect)
1015
+
1016
+ digraph.nodes << <<~DOT
1017
+ #{id} [
1018
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1019
+ ];
1020
+ DOT
1021
+
1022
+ super
1023
+ end
1024
+
1025
+ # Visit a ClassVariableAndWriteNode node.
1026
+ def visit_class_variable_and_write_node(node)
1027
+ table = Table.new("ClassVariableAndWriteNode")
1028
+ id = node_id(node)
1029
+
1030
+ # name
1031
+ table.field("name", node.name.inspect)
1032
+
1033
+ # name_loc
1034
+ table.field("name_loc", location_inspect(node.name_loc))
1035
+
1036
+ # operator_loc
1037
+ table.field("operator_loc", location_inspect(node.operator_loc))
1038
+
1039
+ # value
1040
+ table.field("value", port: true)
1041
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1042
+
1043
+ digraph.nodes << <<~DOT
1044
+ #{id} [
1045
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1046
+ ];
1047
+ DOT
1048
+
1049
+ super
1050
+ end
1051
+
1052
+ # Visit a ClassVariableOperatorWriteNode node.
1053
+ def visit_class_variable_operator_write_node(node)
1054
+ table = Table.new("ClassVariableOperatorWriteNode")
1055
+ id = node_id(node)
1056
+
1057
+ # name
1058
+ table.field("name", node.name.inspect)
1059
+
1060
+ # name_loc
1061
+ table.field("name_loc", location_inspect(node.name_loc))
1062
+
1063
+ # binary_operator_loc
1064
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
1065
+
1066
+ # value
1067
+ table.field("value", port: true)
1068
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1069
+
1070
+ # binary_operator
1071
+ table.field("binary_operator", node.binary_operator.inspect)
1072
+
1073
+ digraph.nodes << <<~DOT
1074
+ #{id} [
1075
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1076
+ ];
1077
+ DOT
1078
+
1079
+ super
1080
+ end
1081
+
1082
+ # Visit a ClassVariableOrWriteNode node.
1083
+ def visit_class_variable_or_write_node(node)
1084
+ table = Table.new("ClassVariableOrWriteNode")
1085
+ id = node_id(node)
1086
+
1087
+ # name
1088
+ table.field("name", node.name.inspect)
1089
+
1090
+ # name_loc
1091
+ table.field("name_loc", location_inspect(node.name_loc))
1092
+
1093
+ # operator_loc
1094
+ table.field("operator_loc", location_inspect(node.operator_loc))
1095
+
1096
+ # value
1097
+ table.field("value", port: true)
1098
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1099
+
1100
+ digraph.nodes << <<~DOT
1101
+ #{id} [
1102
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1103
+ ];
1104
+ DOT
1105
+
1106
+ super
1107
+ end
1108
+
1109
+ # Visit a ClassVariableReadNode node.
1110
+ def visit_class_variable_read_node(node)
1111
+ table = Table.new("ClassVariableReadNode")
1112
+ id = node_id(node)
1113
+
1114
+ # name
1115
+ table.field("name", node.name.inspect)
1116
+
1117
+ digraph.nodes << <<~DOT
1118
+ #{id} [
1119
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1120
+ ];
1121
+ DOT
1122
+
1123
+ super
1124
+ end
1125
+
1126
+ # Visit a ClassVariableTargetNode node.
1127
+ def visit_class_variable_target_node(node)
1128
+ table = Table.new("ClassVariableTargetNode")
1129
+ id = node_id(node)
1130
+
1131
+ # name
1132
+ table.field("name", node.name.inspect)
1133
+
1134
+ digraph.nodes << <<~DOT
1135
+ #{id} [
1136
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1137
+ ];
1138
+ DOT
1139
+
1140
+ super
1141
+ end
1142
+
1143
+ # Visit a ClassVariableWriteNode node.
1144
+ def visit_class_variable_write_node(node)
1145
+ table = Table.new("ClassVariableWriteNode")
1146
+ id = node_id(node)
1147
+
1148
+ # name
1149
+ table.field("name", node.name.inspect)
1150
+
1151
+ # name_loc
1152
+ table.field("name_loc", location_inspect(node.name_loc))
1153
+
1154
+ # value
1155
+ table.field("value", port: true)
1156
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1157
+
1158
+ # operator_loc
1159
+ table.field("operator_loc", location_inspect(node.operator_loc))
1160
+
1161
+ digraph.nodes << <<~DOT
1162
+ #{id} [
1163
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1164
+ ];
1165
+ DOT
1166
+
1167
+ super
1168
+ end
1169
+
1170
+ # Visit a ConstantAndWriteNode node.
1171
+ def visit_constant_and_write_node(node)
1172
+ table = Table.new("ConstantAndWriteNode")
1173
+ id = node_id(node)
1174
+
1175
+ # name
1176
+ table.field("name", node.name.inspect)
1177
+
1178
+ # name_loc
1179
+ table.field("name_loc", location_inspect(node.name_loc))
1180
+
1181
+ # operator_loc
1182
+ table.field("operator_loc", location_inspect(node.operator_loc))
1183
+
1184
+ # value
1185
+ table.field("value", port: true)
1186
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1187
+
1188
+ digraph.nodes << <<~DOT
1189
+ #{id} [
1190
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1191
+ ];
1192
+ DOT
1193
+
1194
+ super
1195
+ end
1196
+
1197
+ # Visit a ConstantOperatorWriteNode node.
1198
+ def visit_constant_operator_write_node(node)
1199
+ table = Table.new("ConstantOperatorWriteNode")
1200
+ id = node_id(node)
1201
+
1202
+ # name
1203
+ table.field("name", node.name.inspect)
1204
+
1205
+ # name_loc
1206
+ table.field("name_loc", location_inspect(node.name_loc))
1207
+
1208
+ # binary_operator_loc
1209
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
1210
+
1211
+ # value
1212
+ table.field("value", port: true)
1213
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1214
+
1215
+ # binary_operator
1216
+ table.field("binary_operator", node.binary_operator.inspect)
1217
+
1218
+ digraph.nodes << <<~DOT
1219
+ #{id} [
1220
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1221
+ ];
1222
+ DOT
1223
+
1224
+ super
1225
+ end
1226
+
1227
+ # Visit a ConstantOrWriteNode node.
1228
+ def visit_constant_or_write_node(node)
1229
+ table = Table.new("ConstantOrWriteNode")
1230
+ id = node_id(node)
1231
+
1232
+ # name
1233
+ table.field("name", node.name.inspect)
1234
+
1235
+ # name_loc
1236
+ table.field("name_loc", location_inspect(node.name_loc))
1237
+
1238
+ # operator_loc
1239
+ table.field("operator_loc", location_inspect(node.operator_loc))
1240
+
1241
+ # value
1242
+ table.field("value", port: true)
1243
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1244
+
1245
+ digraph.nodes << <<~DOT
1246
+ #{id} [
1247
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1248
+ ];
1249
+ DOT
1250
+
1251
+ super
1252
+ end
1253
+
1254
+ # Visit a ConstantPathAndWriteNode node.
1255
+ def visit_constant_path_and_write_node(node)
1256
+ table = Table.new("ConstantPathAndWriteNode")
1257
+ id = node_id(node)
1258
+
1259
+ # target
1260
+ table.field("target", port: true)
1261
+ digraph.edge("#{id}:target -> #{node_id(node.target)};")
1262
+
1263
+ # operator_loc
1264
+ table.field("operator_loc", location_inspect(node.operator_loc))
1265
+
1266
+ # value
1267
+ table.field("value", port: true)
1268
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1269
+
1270
+ digraph.nodes << <<~DOT
1271
+ #{id} [
1272
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1273
+ ];
1274
+ DOT
1275
+
1276
+ super
1277
+ end
1278
+
1279
+ # Visit a ConstantPathNode node.
1280
+ def visit_constant_path_node(node)
1281
+ table = Table.new("ConstantPathNode")
1282
+ id = node_id(node)
1283
+
1284
+ # parent
1285
+ unless (parent = node.parent).nil?
1286
+ table.field("parent", port: true)
1287
+ digraph.edge("#{id}:parent -> #{node_id(parent)};")
1288
+ end
1289
+
1290
+ # name
1291
+ table.field("name", node.name.inspect)
1292
+
1293
+ # delimiter_loc
1294
+ table.field("delimiter_loc", location_inspect(node.delimiter_loc))
1295
+
1296
+ # name_loc
1297
+ table.field("name_loc", location_inspect(node.name_loc))
1298
+
1299
+ digraph.nodes << <<~DOT
1300
+ #{id} [
1301
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1302
+ ];
1303
+ DOT
1304
+
1305
+ super
1306
+ end
1307
+
1308
+ # Visit a ConstantPathOperatorWriteNode node.
1309
+ def visit_constant_path_operator_write_node(node)
1310
+ table = Table.new("ConstantPathOperatorWriteNode")
1311
+ id = node_id(node)
1312
+
1313
+ # target
1314
+ table.field("target", port: true)
1315
+ digraph.edge("#{id}:target -> #{node_id(node.target)};")
1316
+
1317
+ # binary_operator_loc
1318
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
1319
+
1320
+ # value
1321
+ table.field("value", port: true)
1322
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1323
+
1324
+ # binary_operator
1325
+ table.field("binary_operator", node.binary_operator.inspect)
1326
+
1327
+ digraph.nodes << <<~DOT
1328
+ #{id} [
1329
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1330
+ ];
1331
+ DOT
1332
+
1333
+ super
1334
+ end
1335
+
1336
+ # Visit a ConstantPathOrWriteNode node.
1337
+ def visit_constant_path_or_write_node(node)
1338
+ table = Table.new("ConstantPathOrWriteNode")
1339
+ id = node_id(node)
1340
+
1341
+ # target
1342
+ table.field("target", port: true)
1343
+ digraph.edge("#{id}:target -> #{node_id(node.target)};")
1344
+
1345
+ # operator_loc
1346
+ table.field("operator_loc", location_inspect(node.operator_loc))
1347
+
1348
+ # value
1349
+ table.field("value", port: true)
1350
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1351
+
1352
+ digraph.nodes << <<~DOT
1353
+ #{id} [
1354
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1355
+ ];
1356
+ DOT
1357
+
1358
+ super
1359
+ end
1360
+
1361
+ # Visit a ConstantPathTargetNode node.
1362
+ def visit_constant_path_target_node(node)
1363
+ table = Table.new("ConstantPathTargetNode")
1364
+ id = node_id(node)
1365
+
1366
+ # parent
1367
+ unless (parent = node.parent).nil?
1368
+ table.field("parent", port: true)
1369
+ digraph.edge("#{id}:parent -> #{node_id(parent)};")
1370
+ end
1371
+
1372
+ # name
1373
+ table.field("name", node.name.inspect)
1374
+
1375
+ # delimiter_loc
1376
+ table.field("delimiter_loc", location_inspect(node.delimiter_loc))
1377
+
1378
+ # name_loc
1379
+ table.field("name_loc", location_inspect(node.name_loc))
1380
+
1381
+ digraph.nodes << <<~DOT
1382
+ #{id} [
1383
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1384
+ ];
1385
+ DOT
1386
+
1387
+ super
1388
+ end
1389
+
1390
+ # Visit a ConstantPathWriteNode node.
1391
+ def visit_constant_path_write_node(node)
1392
+ table = Table.new("ConstantPathWriteNode")
1393
+ id = node_id(node)
1394
+
1395
+ # target
1396
+ table.field("target", port: true)
1397
+ digraph.edge("#{id}:target -> #{node_id(node.target)};")
1398
+
1399
+ # operator_loc
1400
+ table.field("operator_loc", location_inspect(node.operator_loc))
1401
+
1402
+ # value
1403
+ table.field("value", port: true)
1404
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1405
+
1406
+ digraph.nodes << <<~DOT
1407
+ #{id} [
1408
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1409
+ ];
1410
+ DOT
1411
+
1412
+ super
1413
+ end
1414
+
1415
+ # Visit a ConstantReadNode node.
1416
+ def visit_constant_read_node(node)
1417
+ table = Table.new("ConstantReadNode")
1418
+ id = node_id(node)
1419
+
1420
+ # name
1421
+ table.field("name", node.name.inspect)
1422
+
1423
+ digraph.nodes << <<~DOT
1424
+ #{id} [
1425
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1426
+ ];
1427
+ DOT
1428
+
1429
+ super
1430
+ end
1431
+
1432
+ # Visit a ConstantTargetNode node.
1433
+ def visit_constant_target_node(node)
1434
+ table = Table.new("ConstantTargetNode")
1435
+ id = node_id(node)
1436
+
1437
+ # name
1438
+ table.field("name", node.name.inspect)
1439
+
1440
+ digraph.nodes << <<~DOT
1441
+ #{id} [
1442
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1443
+ ];
1444
+ DOT
1445
+
1446
+ super
1447
+ end
1448
+
1449
+ # Visit a ConstantWriteNode node.
1450
+ def visit_constant_write_node(node)
1451
+ table = Table.new("ConstantWriteNode")
1452
+ id = node_id(node)
1453
+
1454
+ # name
1455
+ table.field("name", node.name.inspect)
1456
+
1457
+ # name_loc
1458
+ table.field("name_loc", location_inspect(node.name_loc))
1459
+
1460
+ # value
1461
+ table.field("value", port: true)
1462
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1463
+
1464
+ # operator_loc
1465
+ table.field("operator_loc", location_inspect(node.operator_loc))
1466
+
1467
+ digraph.nodes << <<~DOT
1468
+ #{id} [
1469
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1470
+ ];
1471
+ DOT
1472
+
1473
+ super
1474
+ end
1475
+
1476
+ # Visit a DefNode node.
1477
+ def visit_def_node(node)
1478
+ table = Table.new("DefNode")
1479
+ id = node_id(node)
1480
+
1481
+ # name
1482
+ table.field("name", node.name.inspect)
1483
+
1484
+ # name_loc
1485
+ table.field("name_loc", location_inspect(node.name_loc))
1486
+
1487
+ # receiver
1488
+ unless (receiver = node.receiver).nil?
1489
+ table.field("receiver", port: true)
1490
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
1491
+ end
1492
+
1493
+ # parameters
1494
+ unless (parameters = node.parameters).nil?
1495
+ table.field("parameters", port: true)
1496
+ digraph.edge("#{id}:parameters -> #{node_id(parameters)};")
1497
+ end
1498
+
1499
+ # body
1500
+ unless (body = node.body).nil?
1501
+ table.field("body", port: true)
1502
+ digraph.edge("#{id}:body -> #{node_id(body)};")
1503
+ end
1504
+
1505
+ # locals
1506
+ table.field("locals", node.locals.inspect)
1507
+
1508
+ # def_keyword_loc
1509
+ table.field("def_keyword_loc", location_inspect(node.def_keyword_loc))
1510
+
1511
+ # operator_loc
1512
+ unless (operator_loc = node.operator_loc).nil?
1513
+ table.field("operator_loc", location_inspect(operator_loc))
1514
+ end
1515
+
1516
+ # lparen_loc
1517
+ unless (lparen_loc = node.lparen_loc).nil?
1518
+ table.field("lparen_loc", location_inspect(lparen_loc))
1519
+ end
1520
+
1521
+ # rparen_loc
1522
+ unless (rparen_loc = node.rparen_loc).nil?
1523
+ table.field("rparen_loc", location_inspect(rparen_loc))
1524
+ end
1525
+
1526
+ # equal_loc
1527
+ unless (equal_loc = node.equal_loc).nil?
1528
+ table.field("equal_loc", location_inspect(equal_loc))
1529
+ end
1530
+
1531
+ # end_keyword_loc
1532
+ unless (end_keyword_loc = node.end_keyword_loc).nil?
1533
+ table.field("end_keyword_loc", location_inspect(end_keyword_loc))
1534
+ end
1535
+
1536
+ digraph.nodes << <<~DOT
1537
+ #{id} [
1538
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1539
+ ];
1540
+ DOT
1541
+
1542
+ super
1543
+ end
1544
+
1545
+ # Visit a DefinedNode node.
1546
+ def visit_defined_node(node)
1547
+ table = Table.new("DefinedNode")
1548
+ id = node_id(node)
1549
+
1550
+ # lparen_loc
1551
+ unless (lparen_loc = node.lparen_loc).nil?
1552
+ table.field("lparen_loc", location_inspect(lparen_loc))
1553
+ end
1554
+
1555
+ # value
1556
+ table.field("value", port: true)
1557
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1558
+
1559
+ # rparen_loc
1560
+ unless (rparen_loc = node.rparen_loc).nil?
1561
+ table.field("rparen_loc", location_inspect(rparen_loc))
1562
+ end
1563
+
1564
+ # keyword_loc
1565
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
1566
+
1567
+ digraph.nodes << <<~DOT
1568
+ #{id} [
1569
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1570
+ ];
1571
+ DOT
1572
+
1573
+ super
1574
+ end
1575
+
1576
+ # Visit a ElseNode node.
1577
+ def visit_else_node(node)
1578
+ table = Table.new("ElseNode")
1579
+ id = node_id(node)
1580
+
1581
+ # else_keyword_loc
1582
+ table.field("else_keyword_loc", location_inspect(node.else_keyword_loc))
1583
+
1584
+ # statements
1585
+ unless (statements = node.statements).nil?
1586
+ table.field("statements", port: true)
1587
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
1588
+ end
1589
+
1590
+ # end_keyword_loc
1591
+ unless (end_keyword_loc = node.end_keyword_loc).nil?
1592
+ table.field("end_keyword_loc", location_inspect(end_keyword_loc))
1593
+ end
1594
+
1595
+ digraph.nodes << <<~DOT
1596
+ #{id} [
1597
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1598
+ ];
1599
+ DOT
1600
+
1601
+ super
1602
+ end
1603
+
1604
+ # Visit a EmbeddedStatementsNode node.
1605
+ def visit_embedded_statements_node(node)
1606
+ table = Table.new("EmbeddedStatementsNode")
1607
+ id = node_id(node)
1608
+
1609
+ # opening_loc
1610
+ table.field("opening_loc", location_inspect(node.opening_loc))
1611
+
1612
+ # statements
1613
+ unless (statements = node.statements).nil?
1614
+ table.field("statements", port: true)
1615
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
1616
+ end
1617
+
1618
+ # closing_loc
1619
+ table.field("closing_loc", location_inspect(node.closing_loc))
1620
+
1621
+ digraph.nodes << <<~DOT
1622
+ #{id} [
1623
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1624
+ ];
1625
+ DOT
1626
+
1627
+ super
1628
+ end
1629
+
1630
+ # Visit a EmbeddedVariableNode node.
1631
+ def visit_embedded_variable_node(node)
1632
+ table = Table.new("EmbeddedVariableNode")
1633
+ id = node_id(node)
1634
+
1635
+ # operator_loc
1636
+ table.field("operator_loc", location_inspect(node.operator_loc))
1637
+
1638
+ # variable
1639
+ table.field("variable", port: true)
1640
+ digraph.edge("#{id}:variable -> #{node_id(node.variable)};")
1641
+
1642
+ digraph.nodes << <<~DOT
1643
+ #{id} [
1644
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1645
+ ];
1646
+ DOT
1647
+
1648
+ super
1649
+ end
1650
+
1651
+ # Visit a EnsureNode node.
1652
+ def visit_ensure_node(node)
1653
+ table = Table.new("EnsureNode")
1654
+ id = node_id(node)
1655
+
1656
+ # ensure_keyword_loc
1657
+ table.field("ensure_keyword_loc", location_inspect(node.ensure_keyword_loc))
1658
+
1659
+ # statements
1660
+ unless (statements = node.statements).nil?
1661
+ table.field("statements", port: true)
1662
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
1663
+ end
1664
+
1665
+ # end_keyword_loc
1666
+ table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
1667
+
1668
+ digraph.nodes << <<~DOT
1669
+ #{id} [
1670
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1671
+ ];
1672
+ DOT
1673
+
1674
+ super
1675
+ end
1676
+
1677
+ # Visit a FalseNode node.
1678
+ def visit_false_node(node)
1679
+ table = Table.new("FalseNode")
1680
+ id = node_id(node)
1681
+
1682
+ digraph.nodes << <<~DOT
1683
+ #{id} [
1684
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1685
+ ];
1686
+ DOT
1687
+
1688
+ super
1689
+ end
1690
+
1691
+ # Visit a FindPatternNode node.
1692
+ def visit_find_pattern_node(node)
1693
+ table = Table.new("FindPatternNode")
1694
+ id = node_id(node)
1695
+
1696
+ # constant
1697
+ unless (constant = node.constant).nil?
1698
+ table.field("constant", port: true)
1699
+ digraph.edge("#{id}:constant -> #{node_id(constant)};")
1700
+ end
1701
+
1702
+ # left
1703
+ table.field("left", port: true)
1704
+ digraph.edge("#{id}:left -> #{node_id(node.left)};")
1705
+
1706
+ # requireds
1707
+ if node.requireds.any?
1708
+ table.field("requireds", port: true)
1709
+
1710
+ waypoint = "#{id}_requireds"
1711
+ digraph.waypoint("#{waypoint};")
1712
+
1713
+ digraph.edge("#{id}:requireds -> #{waypoint};")
1714
+ node.requireds.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
1715
+ else
1716
+ table.field("requireds", "[]")
1717
+ end
1718
+
1719
+ # right
1720
+ table.field("right", port: true)
1721
+ digraph.edge("#{id}:right -> #{node_id(node.right)};")
1722
+
1723
+ # opening_loc
1724
+ unless (opening_loc = node.opening_loc).nil?
1725
+ table.field("opening_loc", location_inspect(opening_loc))
1726
+ end
1727
+
1728
+ # closing_loc
1729
+ unless (closing_loc = node.closing_loc).nil?
1730
+ table.field("closing_loc", location_inspect(closing_loc))
1731
+ end
1732
+
1733
+ digraph.nodes << <<~DOT
1734
+ #{id} [
1735
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1736
+ ];
1737
+ DOT
1738
+
1739
+ super
1740
+ end
1741
+
1742
+ # Visit a FlipFlopNode node.
1743
+ def visit_flip_flop_node(node)
1744
+ table = Table.new("FlipFlopNode")
1745
+ id = node_id(node)
1746
+
1747
+ # flags
1748
+ table.field("flags", range_flags_inspect(node))
1749
+
1750
+ # left
1751
+ unless (left = node.left).nil?
1752
+ table.field("left", port: true)
1753
+ digraph.edge("#{id}:left -> #{node_id(left)};")
1754
+ end
1755
+
1756
+ # right
1757
+ unless (right = node.right).nil?
1758
+ table.field("right", port: true)
1759
+ digraph.edge("#{id}:right -> #{node_id(right)};")
1760
+ end
1761
+
1762
+ # operator_loc
1763
+ table.field("operator_loc", location_inspect(node.operator_loc))
1764
+
1765
+ digraph.nodes << <<~DOT
1766
+ #{id} [
1767
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1768
+ ];
1769
+ DOT
1770
+
1771
+ super
1772
+ end
1773
+
1774
+ # Visit a FloatNode node.
1775
+ def visit_float_node(node)
1776
+ table = Table.new("FloatNode")
1777
+ id = node_id(node)
1778
+
1779
+ # value
1780
+ table.field("value", node.value.inspect)
1781
+
1782
+ digraph.nodes << <<~DOT
1783
+ #{id} [
1784
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1785
+ ];
1786
+ DOT
1787
+
1788
+ super
1789
+ end
1790
+
1791
+ # Visit a ForNode node.
1792
+ def visit_for_node(node)
1793
+ table = Table.new("ForNode")
1794
+ id = node_id(node)
1795
+
1796
+ # index
1797
+ table.field("index", port: true)
1798
+ digraph.edge("#{id}:index -> #{node_id(node.index)};")
1799
+
1800
+ # collection
1801
+ table.field("collection", port: true)
1802
+ digraph.edge("#{id}:collection -> #{node_id(node.collection)};")
1803
+
1804
+ # statements
1805
+ unless (statements = node.statements).nil?
1806
+ table.field("statements", port: true)
1807
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
1808
+ end
1809
+
1810
+ # for_keyword_loc
1811
+ table.field("for_keyword_loc", location_inspect(node.for_keyword_loc))
1812
+
1813
+ # in_keyword_loc
1814
+ table.field("in_keyword_loc", location_inspect(node.in_keyword_loc))
1815
+
1816
+ # do_keyword_loc
1817
+ unless (do_keyword_loc = node.do_keyword_loc).nil?
1818
+ table.field("do_keyword_loc", location_inspect(do_keyword_loc))
1819
+ end
1820
+
1821
+ # end_keyword_loc
1822
+ table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
1823
+
1824
+ digraph.nodes << <<~DOT
1825
+ #{id} [
1826
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1827
+ ];
1828
+ DOT
1829
+
1830
+ super
1831
+ end
1832
+
1833
+ # Visit a ForwardingArgumentsNode node.
1834
+ def visit_forwarding_arguments_node(node)
1835
+ table = Table.new("ForwardingArgumentsNode")
1836
+ id = node_id(node)
1837
+
1838
+ digraph.nodes << <<~DOT
1839
+ #{id} [
1840
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1841
+ ];
1842
+ DOT
1843
+
1844
+ super
1845
+ end
1846
+
1847
+ # Visit a ForwardingParameterNode node.
1848
+ def visit_forwarding_parameter_node(node)
1849
+ table = Table.new("ForwardingParameterNode")
1850
+ id = node_id(node)
1851
+
1852
+ digraph.nodes << <<~DOT
1853
+ #{id} [
1854
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1855
+ ];
1856
+ DOT
1857
+
1858
+ super
1859
+ end
1860
+
1861
+ # Visit a ForwardingSuperNode node.
1862
+ def visit_forwarding_super_node(node)
1863
+ table = Table.new("ForwardingSuperNode")
1864
+ id = node_id(node)
1865
+
1866
+ # block
1867
+ unless (block = node.block).nil?
1868
+ table.field("block", port: true)
1869
+ digraph.edge("#{id}:block -> #{node_id(block)};")
1870
+ end
1871
+
1872
+ digraph.nodes << <<~DOT
1873
+ #{id} [
1874
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1875
+ ];
1876
+ DOT
1877
+
1878
+ super
1879
+ end
1880
+
1881
+ # Visit a GlobalVariableAndWriteNode node.
1882
+ def visit_global_variable_and_write_node(node)
1883
+ table = Table.new("GlobalVariableAndWriteNode")
1884
+ id = node_id(node)
1885
+
1886
+ # name
1887
+ table.field("name", node.name.inspect)
1888
+
1889
+ # name_loc
1890
+ table.field("name_loc", location_inspect(node.name_loc))
1891
+
1892
+ # operator_loc
1893
+ table.field("operator_loc", location_inspect(node.operator_loc))
1894
+
1895
+ # value
1896
+ table.field("value", port: true)
1897
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1898
+
1899
+ digraph.nodes << <<~DOT
1900
+ #{id} [
1901
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1902
+ ];
1903
+ DOT
1904
+
1905
+ super
1906
+ end
1907
+
1908
+ # Visit a GlobalVariableOperatorWriteNode node.
1909
+ def visit_global_variable_operator_write_node(node)
1910
+ table = Table.new("GlobalVariableOperatorWriteNode")
1911
+ id = node_id(node)
1912
+
1913
+ # name
1914
+ table.field("name", node.name.inspect)
1915
+
1916
+ # name_loc
1917
+ table.field("name_loc", location_inspect(node.name_loc))
1918
+
1919
+ # binary_operator_loc
1920
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
1921
+
1922
+ # value
1923
+ table.field("value", port: true)
1924
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1925
+
1926
+ # binary_operator
1927
+ table.field("binary_operator", node.binary_operator.inspect)
1928
+
1929
+ digraph.nodes << <<~DOT
1930
+ #{id} [
1931
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1932
+ ];
1933
+ DOT
1934
+
1935
+ super
1936
+ end
1937
+
1938
+ # Visit a GlobalVariableOrWriteNode node.
1939
+ def visit_global_variable_or_write_node(node)
1940
+ table = Table.new("GlobalVariableOrWriteNode")
1941
+ id = node_id(node)
1942
+
1943
+ # name
1944
+ table.field("name", node.name.inspect)
1945
+
1946
+ # name_loc
1947
+ table.field("name_loc", location_inspect(node.name_loc))
1948
+
1949
+ # operator_loc
1950
+ table.field("operator_loc", location_inspect(node.operator_loc))
1951
+
1952
+ # value
1953
+ table.field("value", port: true)
1954
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
1955
+
1956
+ digraph.nodes << <<~DOT
1957
+ #{id} [
1958
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1959
+ ];
1960
+ DOT
1961
+
1962
+ super
1963
+ end
1964
+
1965
+ # Visit a GlobalVariableReadNode node.
1966
+ def visit_global_variable_read_node(node)
1967
+ table = Table.new("GlobalVariableReadNode")
1968
+ id = node_id(node)
1969
+
1970
+ # name
1971
+ table.field("name", node.name.inspect)
1972
+
1973
+ digraph.nodes << <<~DOT
1974
+ #{id} [
1975
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1976
+ ];
1977
+ DOT
1978
+
1979
+ super
1980
+ end
1981
+
1982
+ # Visit a GlobalVariableTargetNode node.
1983
+ def visit_global_variable_target_node(node)
1984
+ table = Table.new("GlobalVariableTargetNode")
1985
+ id = node_id(node)
1986
+
1987
+ # name
1988
+ table.field("name", node.name.inspect)
1989
+
1990
+ digraph.nodes << <<~DOT
1991
+ #{id} [
1992
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
1993
+ ];
1994
+ DOT
1995
+
1996
+ super
1997
+ end
1998
+
1999
+ # Visit a GlobalVariableWriteNode node.
2000
+ def visit_global_variable_write_node(node)
2001
+ table = Table.new("GlobalVariableWriteNode")
2002
+ id = node_id(node)
2003
+
2004
+ # name
2005
+ table.field("name", node.name.inspect)
2006
+
2007
+ # name_loc
2008
+ table.field("name_loc", location_inspect(node.name_loc))
2009
+
2010
+ # value
2011
+ table.field("value", port: true)
2012
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2013
+
2014
+ # operator_loc
2015
+ table.field("operator_loc", location_inspect(node.operator_loc))
2016
+
2017
+ digraph.nodes << <<~DOT
2018
+ #{id} [
2019
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2020
+ ];
2021
+ DOT
2022
+
2023
+ super
2024
+ end
2025
+
2026
+ # Visit a HashNode node.
2027
+ def visit_hash_node(node)
2028
+ table = Table.new("HashNode")
2029
+ id = node_id(node)
2030
+
2031
+ # opening_loc
2032
+ table.field("opening_loc", location_inspect(node.opening_loc))
2033
+
2034
+ # elements
2035
+ if node.elements.any?
2036
+ table.field("elements", port: true)
2037
+
2038
+ waypoint = "#{id}_elements"
2039
+ digraph.waypoint("#{waypoint};")
2040
+
2041
+ digraph.edge("#{id}:elements -> #{waypoint};")
2042
+ node.elements.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2043
+ else
2044
+ table.field("elements", "[]")
2045
+ end
2046
+
2047
+ # closing_loc
2048
+ table.field("closing_loc", location_inspect(node.closing_loc))
2049
+
2050
+ digraph.nodes << <<~DOT
2051
+ #{id} [
2052
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2053
+ ];
2054
+ DOT
2055
+
2056
+ super
2057
+ end
2058
+
2059
+ # Visit a HashPatternNode node.
2060
+ def visit_hash_pattern_node(node)
2061
+ table = Table.new("HashPatternNode")
2062
+ id = node_id(node)
2063
+
2064
+ # constant
2065
+ unless (constant = node.constant).nil?
2066
+ table.field("constant", port: true)
2067
+ digraph.edge("#{id}:constant -> #{node_id(constant)};")
2068
+ end
2069
+
2070
+ # elements
2071
+ if node.elements.any?
2072
+ table.field("elements", port: true)
2073
+
2074
+ waypoint = "#{id}_elements"
2075
+ digraph.waypoint("#{waypoint};")
2076
+
2077
+ digraph.edge("#{id}:elements -> #{waypoint};")
2078
+ node.elements.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2079
+ else
2080
+ table.field("elements", "[]")
2081
+ end
2082
+
2083
+ # rest
2084
+ unless (rest = node.rest).nil?
2085
+ table.field("rest", port: true)
2086
+ digraph.edge("#{id}:rest -> #{node_id(rest)};")
2087
+ end
2088
+
2089
+ # opening_loc
2090
+ unless (opening_loc = node.opening_loc).nil?
2091
+ table.field("opening_loc", location_inspect(opening_loc))
2092
+ end
2093
+
2094
+ # closing_loc
2095
+ unless (closing_loc = node.closing_loc).nil?
2096
+ table.field("closing_loc", location_inspect(closing_loc))
2097
+ end
2098
+
2099
+ digraph.nodes << <<~DOT
2100
+ #{id} [
2101
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2102
+ ];
2103
+ DOT
2104
+
2105
+ super
2106
+ end
2107
+
2108
+ # Visit a IfNode node.
2109
+ def visit_if_node(node)
2110
+ table = Table.new("IfNode")
2111
+ id = node_id(node)
2112
+
2113
+ # if_keyword_loc
2114
+ unless (if_keyword_loc = node.if_keyword_loc).nil?
2115
+ table.field("if_keyword_loc", location_inspect(if_keyword_loc))
2116
+ end
2117
+
2118
+ # predicate
2119
+ table.field("predicate", port: true)
2120
+ digraph.edge("#{id}:predicate -> #{node_id(node.predicate)};")
2121
+
2122
+ # then_keyword_loc
2123
+ unless (then_keyword_loc = node.then_keyword_loc).nil?
2124
+ table.field("then_keyword_loc", location_inspect(then_keyword_loc))
2125
+ end
2126
+
2127
+ # statements
2128
+ unless (statements = node.statements).nil?
2129
+ table.field("statements", port: true)
2130
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
2131
+ end
2132
+
2133
+ # subsequent
2134
+ unless (subsequent = node.subsequent).nil?
2135
+ table.field("subsequent", port: true)
2136
+ digraph.edge("#{id}:subsequent -> #{node_id(subsequent)};")
2137
+ end
2138
+
2139
+ # end_keyword_loc
2140
+ unless (end_keyword_loc = node.end_keyword_loc).nil?
2141
+ table.field("end_keyword_loc", location_inspect(end_keyword_loc))
2142
+ end
2143
+
2144
+ digraph.nodes << <<~DOT
2145
+ #{id} [
2146
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2147
+ ];
2148
+ DOT
2149
+
2150
+ super
2151
+ end
2152
+
2153
+ # Visit a ImaginaryNode node.
2154
+ def visit_imaginary_node(node)
2155
+ table = Table.new("ImaginaryNode")
2156
+ id = node_id(node)
2157
+
2158
+ # numeric
2159
+ table.field("numeric", port: true)
2160
+ digraph.edge("#{id}:numeric -> #{node_id(node.numeric)};")
2161
+
2162
+ digraph.nodes << <<~DOT
2163
+ #{id} [
2164
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2165
+ ];
2166
+ DOT
2167
+
2168
+ super
2169
+ end
2170
+
2171
+ # Visit a ImplicitNode node.
2172
+ def visit_implicit_node(node)
2173
+ table = Table.new("ImplicitNode")
2174
+ id = node_id(node)
2175
+
2176
+ # value
2177
+ table.field("value", port: true)
2178
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2179
+
2180
+ digraph.nodes << <<~DOT
2181
+ #{id} [
2182
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2183
+ ];
2184
+ DOT
2185
+
2186
+ super
2187
+ end
2188
+
2189
+ # Visit a ImplicitRestNode node.
2190
+ def visit_implicit_rest_node(node)
2191
+ table = Table.new("ImplicitRestNode")
2192
+ id = node_id(node)
2193
+
2194
+ digraph.nodes << <<~DOT
2195
+ #{id} [
2196
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2197
+ ];
2198
+ DOT
2199
+
2200
+ super
2201
+ end
2202
+
2203
+ # Visit a InNode node.
2204
+ def visit_in_node(node)
2205
+ table = Table.new("InNode")
2206
+ id = node_id(node)
2207
+
2208
+ # pattern
2209
+ table.field("pattern", port: true)
2210
+ digraph.edge("#{id}:pattern -> #{node_id(node.pattern)};")
2211
+
2212
+ # statements
2213
+ unless (statements = node.statements).nil?
2214
+ table.field("statements", port: true)
2215
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
2216
+ end
2217
+
2218
+ # in_loc
2219
+ table.field("in_loc", location_inspect(node.in_loc))
2220
+
2221
+ # then_loc
2222
+ unless (then_loc = node.then_loc).nil?
2223
+ table.field("then_loc", location_inspect(then_loc))
2224
+ end
2225
+
2226
+ digraph.nodes << <<~DOT
2227
+ #{id} [
2228
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2229
+ ];
2230
+ DOT
2231
+
2232
+ super
2233
+ end
2234
+
2235
+ # Visit a IndexAndWriteNode node.
2236
+ def visit_index_and_write_node(node)
2237
+ table = Table.new("IndexAndWriteNode")
2238
+ id = node_id(node)
2239
+
2240
+ # flags
2241
+ table.field("flags", call_node_flags_inspect(node))
2242
+
2243
+ # receiver
2244
+ unless (receiver = node.receiver).nil?
2245
+ table.field("receiver", port: true)
2246
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
2247
+ end
2248
+
2249
+ # call_operator_loc
2250
+ unless (call_operator_loc = node.call_operator_loc).nil?
2251
+ table.field("call_operator_loc", location_inspect(call_operator_loc))
2252
+ end
2253
+
2254
+ # opening_loc
2255
+ table.field("opening_loc", location_inspect(node.opening_loc))
2256
+
2257
+ # arguments
2258
+ unless (arguments = node.arguments).nil?
2259
+ table.field("arguments", port: true)
2260
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
2261
+ end
2262
+
2263
+ # closing_loc
2264
+ table.field("closing_loc", location_inspect(node.closing_loc))
2265
+
2266
+ # block
2267
+ unless (block = node.block).nil?
2268
+ table.field("block", port: true)
2269
+ digraph.edge("#{id}:block -> #{node_id(block)};")
2270
+ end
2271
+
2272
+ # operator_loc
2273
+ table.field("operator_loc", location_inspect(node.operator_loc))
2274
+
2275
+ # value
2276
+ table.field("value", port: true)
2277
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2278
+
2279
+ digraph.nodes << <<~DOT
2280
+ #{id} [
2281
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2282
+ ];
2283
+ DOT
2284
+
2285
+ super
2286
+ end
2287
+
2288
+ # Visit a IndexOperatorWriteNode node.
2289
+ def visit_index_operator_write_node(node)
2290
+ table = Table.new("IndexOperatorWriteNode")
2291
+ id = node_id(node)
2292
+
2293
+ # flags
2294
+ table.field("flags", call_node_flags_inspect(node))
2295
+
2296
+ # receiver
2297
+ unless (receiver = node.receiver).nil?
2298
+ table.field("receiver", port: true)
2299
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
2300
+ end
2301
+
2302
+ # call_operator_loc
2303
+ unless (call_operator_loc = node.call_operator_loc).nil?
2304
+ table.field("call_operator_loc", location_inspect(call_operator_loc))
2305
+ end
2306
+
2307
+ # opening_loc
2308
+ table.field("opening_loc", location_inspect(node.opening_loc))
2309
+
2310
+ # arguments
2311
+ unless (arguments = node.arguments).nil?
2312
+ table.field("arguments", port: true)
2313
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
2314
+ end
2315
+
2316
+ # closing_loc
2317
+ table.field("closing_loc", location_inspect(node.closing_loc))
2318
+
2319
+ # block
2320
+ unless (block = node.block).nil?
2321
+ table.field("block", port: true)
2322
+ digraph.edge("#{id}:block -> #{node_id(block)};")
2323
+ end
2324
+
2325
+ # binary_operator
2326
+ table.field("binary_operator", node.binary_operator.inspect)
2327
+
2328
+ # binary_operator_loc
2329
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
2330
+
2331
+ # value
2332
+ table.field("value", port: true)
2333
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2334
+
2335
+ digraph.nodes << <<~DOT
2336
+ #{id} [
2337
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2338
+ ];
2339
+ DOT
2340
+
2341
+ super
2342
+ end
2343
+
2344
+ # Visit a IndexOrWriteNode node.
2345
+ def visit_index_or_write_node(node)
2346
+ table = Table.new("IndexOrWriteNode")
2347
+ id = node_id(node)
2348
+
2349
+ # flags
2350
+ table.field("flags", call_node_flags_inspect(node))
2351
+
2352
+ # receiver
2353
+ unless (receiver = node.receiver).nil?
2354
+ table.field("receiver", port: true)
2355
+ digraph.edge("#{id}:receiver -> #{node_id(receiver)};")
2356
+ end
2357
+
2358
+ # call_operator_loc
2359
+ unless (call_operator_loc = node.call_operator_loc).nil?
2360
+ table.field("call_operator_loc", location_inspect(call_operator_loc))
2361
+ end
2362
+
2363
+ # opening_loc
2364
+ table.field("opening_loc", location_inspect(node.opening_loc))
2365
+
2366
+ # arguments
2367
+ unless (arguments = node.arguments).nil?
2368
+ table.field("arguments", port: true)
2369
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
2370
+ end
2371
+
2372
+ # closing_loc
2373
+ table.field("closing_loc", location_inspect(node.closing_loc))
2374
+
2375
+ # block
2376
+ unless (block = node.block).nil?
2377
+ table.field("block", port: true)
2378
+ digraph.edge("#{id}:block -> #{node_id(block)};")
2379
+ end
2380
+
2381
+ # operator_loc
2382
+ table.field("operator_loc", location_inspect(node.operator_loc))
2383
+
2384
+ # value
2385
+ table.field("value", port: true)
2386
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2387
+
2388
+ digraph.nodes << <<~DOT
2389
+ #{id} [
2390
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2391
+ ];
2392
+ DOT
2393
+
2394
+ super
2395
+ end
2396
+
2397
+ # Visit a IndexTargetNode node.
2398
+ def visit_index_target_node(node)
2399
+ table = Table.new("IndexTargetNode")
2400
+ id = node_id(node)
2401
+
2402
+ # flags
2403
+ table.field("flags", call_node_flags_inspect(node))
2404
+
2405
+ # receiver
2406
+ table.field("receiver", port: true)
2407
+ digraph.edge("#{id}:receiver -> #{node_id(node.receiver)};")
2408
+
2409
+ # opening_loc
2410
+ table.field("opening_loc", location_inspect(node.opening_loc))
2411
+
2412
+ # arguments
2413
+ unless (arguments = node.arguments).nil?
2414
+ table.field("arguments", port: true)
2415
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
2416
+ end
2417
+
2418
+ # closing_loc
2419
+ table.field("closing_loc", location_inspect(node.closing_loc))
2420
+
2421
+ # block
2422
+ unless (block = node.block).nil?
2423
+ table.field("block", port: true)
2424
+ digraph.edge("#{id}:block -> #{node_id(block)};")
2425
+ end
2426
+
2427
+ digraph.nodes << <<~DOT
2428
+ #{id} [
2429
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2430
+ ];
2431
+ DOT
2432
+
2433
+ super
2434
+ end
2435
+
2436
+ # Visit a InstanceVariableAndWriteNode node.
2437
+ def visit_instance_variable_and_write_node(node)
2438
+ table = Table.new("InstanceVariableAndWriteNode")
2439
+ id = node_id(node)
2440
+
2441
+ # name
2442
+ table.field("name", node.name.inspect)
2443
+
2444
+ # name_loc
2445
+ table.field("name_loc", location_inspect(node.name_loc))
2446
+
2447
+ # operator_loc
2448
+ table.field("operator_loc", location_inspect(node.operator_loc))
2449
+
2450
+ # value
2451
+ table.field("value", port: true)
2452
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2453
+
2454
+ digraph.nodes << <<~DOT
2455
+ #{id} [
2456
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2457
+ ];
2458
+ DOT
2459
+
2460
+ super
2461
+ end
2462
+
2463
+ # Visit a InstanceVariableOperatorWriteNode node.
2464
+ def visit_instance_variable_operator_write_node(node)
2465
+ table = Table.new("InstanceVariableOperatorWriteNode")
2466
+ id = node_id(node)
2467
+
2468
+ # name
2469
+ table.field("name", node.name.inspect)
2470
+
2471
+ # name_loc
2472
+ table.field("name_loc", location_inspect(node.name_loc))
2473
+
2474
+ # binary_operator_loc
2475
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
2476
+
2477
+ # value
2478
+ table.field("value", port: true)
2479
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2480
+
2481
+ # binary_operator
2482
+ table.field("binary_operator", node.binary_operator.inspect)
2483
+
2484
+ digraph.nodes << <<~DOT
2485
+ #{id} [
2486
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2487
+ ];
2488
+ DOT
2489
+
2490
+ super
2491
+ end
2492
+
2493
+ # Visit a InstanceVariableOrWriteNode node.
2494
+ def visit_instance_variable_or_write_node(node)
2495
+ table = Table.new("InstanceVariableOrWriteNode")
2496
+ id = node_id(node)
2497
+
2498
+ # name
2499
+ table.field("name", node.name.inspect)
2500
+
2501
+ # name_loc
2502
+ table.field("name_loc", location_inspect(node.name_loc))
2503
+
2504
+ # operator_loc
2505
+ table.field("operator_loc", location_inspect(node.operator_loc))
2506
+
2507
+ # value
2508
+ table.field("value", port: true)
2509
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2510
+
2511
+ digraph.nodes << <<~DOT
2512
+ #{id} [
2513
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2514
+ ];
2515
+ DOT
2516
+
2517
+ super
2518
+ end
2519
+
2520
+ # Visit a InstanceVariableReadNode node.
2521
+ def visit_instance_variable_read_node(node)
2522
+ table = Table.new("InstanceVariableReadNode")
2523
+ id = node_id(node)
2524
+
2525
+ # name
2526
+ table.field("name", node.name.inspect)
2527
+
2528
+ digraph.nodes << <<~DOT
2529
+ #{id} [
2530
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2531
+ ];
2532
+ DOT
2533
+
2534
+ super
2535
+ end
2536
+
2537
+ # Visit a InstanceVariableTargetNode node.
2538
+ def visit_instance_variable_target_node(node)
2539
+ table = Table.new("InstanceVariableTargetNode")
2540
+ id = node_id(node)
2541
+
2542
+ # name
2543
+ table.field("name", node.name.inspect)
2544
+
2545
+ digraph.nodes << <<~DOT
2546
+ #{id} [
2547
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2548
+ ];
2549
+ DOT
2550
+
2551
+ super
2552
+ end
2553
+
2554
+ # Visit a InstanceVariableWriteNode node.
2555
+ def visit_instance_variable_write_node(node)
2556
+ table = Table.new("InstanceVariableWriteNode")
2557
+ id = node_id(node)
2558
+
2559
+ # name
2560
+ table.field("name", node.name.inspect)
2561
+
2562
+ # name_loc
2563
+ table.field("name_loc", location_inspect(node.name_loc))
2564
+
2565
+ # value
2566
+ table.field("value", port: true)
2567
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2568
+
2569
+ # operator_loc
2570
+ table.field("operator_loc", location_inspect(node.operator_loc))
2571
+
2572
+ digraph.nodes << <<~DOT
2573
+ #{id} [
2574
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2575
+ ];
2576
+ DOT
2577
+
2578
+ super
2579
+ end
2580
+
2581
+ # Visit a IntegerNode node.
2582
+ def visit_integer_node(node)
2583
+ table = Table.new("IntegerNode")
2584
+ id = node_id(node)
2585
+
2586
+ # flags
2587
+ table.field("flags", integer_base_flags_inspect(node))
2588
+
2589
+ # value
2590
+ table.field("value", node.value.inspect)
2591
+
2592
+ digraph.nodes << <<~DOT
2593
+ #{id} [
2594
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2595
+ ];
2596
+ DOT
2597
+
2598
+ super
2599
+ end
2600
+
2601
+ # Visit a InterpolatedMatchLastLineNode node.
2602
+ def visit_interpolated_match_last_line_node(node)
2603
+ table = Table.new("InterpolatedMatchLastLineNode")
2604
+ id = node_id(node)
2605
+
2606
+ # flags
2607
+ table.field("flags", regular_expression_flags_inspect(node))
2608
+
2609
+ # opening_loc
2610
+ table.field("opening_loc", location_inspect(node.opening_loc))
2611
+
2612
+ # parts
2613
+ if node.parts.any?
2614
+ table.field("parts", port: true)
2615
+
2616
+ waypoint = "#{id}_parts"
2617
+ digraph.waypoint("#{waypoint};")
2618
+
2619
+ digraph.edge("#{id}:parts -> #{waypoint};")
2620
+ node.parts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2621
+ else
2622
+ table.field("parts", "[]")
2623
+ end
2624
+
2625
+ # closing_loc
2626
+ table.field("closing_loc", location_inspect(node.closing_loc))
2627
+
2628
+ digraph.nodes << <<~DOT
2629
+ #{id} [
2630
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2631
+ ];
2632
+ DOT
2633
+
2634
+ super
2635
+ end
2636
+
2637
+ # Visit a InterpolatedRegularExpressionNode node.
2638
+ def visit_interpolated_regular_expression_node(node)
2639
+ table = Table.new("InterpolatedRegularExpressionNode")
2640
+ id = node_id(node)
2641
+
2642
+ # flags
2643
+ table.field("flags", regular_expression_flags_inspect(node))
2644
+
2645
+ # opening_loc
2646
+ table.field("opening_loc", location_inspect(node.opening_loc))
2647
+
2648
+ # parts
2649
+ if node.parts.any?
2650
+ table.field("parts", port: true)
2651
+
2652
+ waypoint = "#{id}_parts"
2653
+ digraph.waypoint("#{waypoint};")
2654
+
2655
+ digraph.edge("#{id}:parts -> #{waypoint};")
2656
+ node.parts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2657
+ else
2658
+ table.field("parts", "[]")
2659
+ end
2660
+
2661
+ # closing_loc
2662
+ table.field("closing_loc", location_inspect(node.closing_loc))
2663
+
2664
+ digraph.nodes << <<~DOT
2665
+ #{id} [
2666
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2667
+ ];
2668
+ DOT
2669
+
2670
+ super
2671
+ end
2672
+
2673
+ # Visit a InterpolatedStringNode node.
2674
+ def visit_interpolated_string_node(node)
2675
+ table = Table.new("InterpolatedStringNode")
2676
+ id = node_id(node)
2677
+
2678
+ # flags
2679
+ table.field("flags", interpolated_string_node_flags_inspect(node))
2680
+
2681
+ # opening_loc
2682
+ unless (opening_loc = node.opening_loc).nil?
2683
+ table.field("opening_loc", location_inspect(opening_loc))
2684
+ end
2685
+
2686
+ # parts
2687
+ if node.parts.any?
2688
+ table.field("parts", port: true)
2689
+
2690
+ waypoint = "#{id}_parts"
2691
+ digraph.waypoint("#{waypoint};")
2692
+
2693
+ digraph.edge("#{id}:parts -> #{waypoint};")
2694
+ node.parts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2695
+ else
2696
+ table.field("parts", "[]")
2697
+ end
2698
+
2699
+ # closing_loc
2700
+ unless (closing_loc = node.closing_loc).nil?
2701
+ table.field("closing_loc", location_inspect(closing_loc))
2702
+ end
2703
+
2704
+ digraph.nodes << <<~DOT
2705
+ #{id} [
2706
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2707
+ ];
2708
+ DOT
2709
+
2710
+ super
2711
+ end
2712
+
2713
+ # Visit a InterpolatedSymbolNode node.
2714
+ def visit_interpolated_symbol_node(node)
2715
+ table = Table.new("InterpolatedSymbolNode")
2716
+ id = node_id(node)
2717
+
2718
+ # opening_loc
2719
+ unless (opening_loc = node.opening_loc).nil?
2720
+ table.field("opening_loc", location_inspect(opening_loc))
2721
+ end
2722
+
2723
+ # parts
2724
+ if node.parts.any?
2725
+ table.field("parts", port: true)
2726
+
2727
+ waypoint = "#{id}_parts"
2728
+ digraph.waypoint("#{waypoint};")
2729
+
2730
+ digraph.edge("#{id}:parts -> #{waypoint};")
2731
+ node.parts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2732
+ else
2733
+ table.field("parts", "[]")
2734
+ end
2735
+
2736
+ # closing_loc
2737
+ unless (closing_loc = node.closing_loc).nil?
2738
+ table.field("closing_loc", location_inspect(closing_loc))
2739
+ end
2740
+
2741
+ digraph.nodes << <<~DOT
2742
+ #{id} [
2743
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2744
+ ];
2745
+ DOT
2746
+
2747
+ super
2748
+ end
2749
+
2750
+ # Visit a InterpolatedXStringNode node.
2751
+ def visit_interpolated_x_string_node(node)
2752
+ table = Table.new("InterpolatedXStringNode")
2753
+ id = node_id(node)
2754
+
2755
+ # opening_loc
2756
+ table.field("opening_loc", location_inspect(node.opening_loc))
2757
+
2758
+ # parts
2759
+ if node.parts.any?
2760
+ table.field("parts", port: true)
2761
+
2762
+ waypoint = "#{id}_parts"
2763
+ digraph.waypoint("#{waypoint};")
2764
+
2765
+ digraph.edge("#{id}:parts -> #{waypoint};")
2766
+ node.parts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2767
+ else
2768
+ table.field("parts", "[]")
2769
+ end
2770
+
2771
+ # closing_loc
2772
+ table.field("closing_loc", location_inspect(node.closing_loc))
2773
+
2774
+ digraph.nodes << <<~DOT
2775
+ #{id} [
2776
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2777
+ ];
2778
+ DOT
2779
+
2780
+ super
2781
+ end
2782
+
2783
+ # Visit a ItLocalVariableReadNode node.
2784
+ def visit_it_local_variable_read_node(node)
2785
+ table = Table.new("ItLocalVariableReadNode")
2786
+ id = node_id(node)
2787
+
2788
+ digraph.nodes << <<~DOT
2789
+ #{id} [
2790
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2791
+ ];
2792
+ DOT
2793
+
2794
+ super
2795
+ end
2796
+
2797
+ # Visit a ItParametersNode node.
2798
+ def visit_it_parameters_node(node)
2799
+ table = Table.new("ItParametersNode")
2800
+ id = node_id(node)
2801
+
2802
+ digraph.nodes << <<~DOT
2803
+ #{id} [
2804
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2805
+ ];
2806
+ DOT
2807
+
2808
+ super
2809
+ end
2810
+
2811
+ # Visit a KeywordHashNode node.
2812
+ def visit_keyword_hash_node(node)
2813
+ table = Table.new("KeywordHashNode")
2814
+ id = node_id(node)
2815
+
2816
+ # flags
2817
+ table.field("flags", keyword_hash_node_flags_inspect(node))
2818
+
2819
+ # elements
2820
+ if node.elements.any?
2821
+ table.field("elements", port: true)
2822
+
2823
+ waypoint = "#{id}_elements"
2824
+ digraph.waypoint("#{waypoint};")
2825
+
2826
+ digraph.edge("#{id}:elements -> #{waypoint};")
2827
+ node.elements.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
2828
+ else
2829
+ table.field("elements", "[]")
2830
+ end
2831
+
2832
+ digraph.nodes << <<~DOT
2833
+ #{id} [
2834
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2835
+ ];
2836
+ DOT
2837
+
2838
+ super
2839
+ end
2840
+
2841
+ # Visit a KeywordRestParameterNode node.
2842
+ def visit_keyword_rest_parameter_node(node)
2843
+ table = Table.new("KeywordRestParameterNode")
2844
+ id = node_id(node)
2845
+
2846
+ # flags
2847
+ table.field("flags", parameter_flags_inspect(node))
2848
+
2849
+ # name
2850
+ table.field("name", node.name.inspect)
2851
+
2852
+ # name_loc
2853
+ unless (name_loc = node.name_loc).nil?
2854
+ table.field("name_loc", location_inspect(name_loc))
2855
+ end
2856
+
2857
+ # operator_loc
2858
+ table.field("operator_loc", location_inspect(node.operator_loc))
2859
+
2860
+ digraph.nodes << <<~DOT
2861
+ #{id} [
2862
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2863
+ ];
2864
+ DOT
2865
+
2866
+ super
2867
+ end
2868
+
2869
+ # Visit a LambdaNode node.
2870
+ def visit_lambda_node(node)
2871
+ table = Table.new("LambdaNode")
2872
+ id = node_id(node)
2873
+
2874
+ # locals
2875
+ table.field("locals", node.locals.inspect)
2876
+
2877
+ # operator_loc
2878
+ table.field("operator_loc", location_inspect(node.operator_loc))
2879
+
2880
+ # opening_loc
2881
+ table.field("opening_loc", location_inspect(node.opening_loc))
2882
+
2883
+ # closing_loc
2884
+ table.field("closing_loc", location_inspect(node.closing_loc))
2885
+
2886
+ # parameters
2887
+ unless (parameters = node.parameters).nil?
2888
+ table.field("parameters", port: true)
2889
+ digraph.edge("#{id}:parameters -> #{node_id(parameters)};")
2890
+ end
2891
+
2892
+ # body
2893
+ unless (body = node.body).nil?
2894
+ table.field("body", port: true)
2895
+ digraph.edge("#{id}:body -> #{node_id(body)};")
2896
+ end
2897
+
2898
+ digraph.nodes << <<~DOT
2899
+ #{id} [
2900
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2901
+ ];
2902
+ DOT
2903
+
2904
+ super
2905
+ end
2906
+
2907
+ # Visit a LocalVariableAndWriteNode node.
2908
+ def visit_local_variable_and_write_node(node)
2909
+ table = Table.new("LocalVariableAndWriteNode")
2910
+ id = node_id(node)
2911
+
2912
+ # name_loc
2913
+ table.field("name_loc", location_inspect(node.name_loc))
2914
+
2915
+ # operator_loc
2916
+ table.field("operator_loc", location_inspect(node.operator_loc))
2917
+
2918
+ # value
2919
+ table.field("value", port: true)
2920
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2921
+
2922
+ # name
2923
+ table.field("name", node.name.inspect)
2924
+
2925
+ # depth
2926
+ table.field("depth", node.depth.inspect)
2927
+
2928
+ digraph.nodes << <<~DOT
2929
+ #{id} [
2930
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2931
+ ];
2932
+ DOT
2933
+
2934
+ super
2935
+ end
2936
+
2937
+ # Visit a LocalVariableOperatorWriteNode node.
2938
+ def visit_local_variable_operator_write_node(node)
2939
+ table = Table.new("LocalVariableOperatorWriteNode")
2940
+ id = node_id(node)
2941
+
2942
+ # name_loc
2943
+ table.field("name_loc", location_inspect(node.name_loc))
2944
+
2945
+ # binary_operator_loc
2946
+ table.field("binary_operator_loc", location_inspect(node.binary_operator_loc))
2947
+
2948
+ # value
2949
+ table.field("value", port: true)
2950
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2951
+
2952
+ # name
2953
+ table.field("name", node.name.inspect)
2954
+
2955
+ # binary_operator
2956
+ table.field("binary_operator", node.binary_operator.inspect)
2957
+
2958
+ # depth
2959
+ table.field("depth", node.depth.inspect)
2960
+
2961
+ digraph.nodes << <<~DOT
2962
+ #{id} [
2963
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2964
+ ];
2965
+ DOT
2966
+
2967
+ super
2968
+ end
2969
+
2970
+ # Visit a LocalVariableOrWriteNode node.
2971
+ def visit_local_variable_or_write_node(node)
2972
+ table = Table.new("LocalVariableOrWriteNode")
2973
+ id = node_id(node)
2974
+
2975
+ # name_loc
2976
+ table.field("name_loc", location_inspect(node.name_loc))
2977
+
2978
+ # operator_loc
2979
+ table.field("operator_loc", location_inspect(node.operator_loc))
2980
+
2981
+ # value
2982
+ table.field("value", port: true)
2983
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
2984
+
2985
+ # name
2986
+ table.field("name", node.name.inspect)
2987
+
2988
+ # depth
2989
+ table.field("depth", node.depth.inspect)
2990
+
2991
+ digraph.nodes << <<~DOT
2992
+ #{id} [
2993
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
2994
+ ];
2995
+ DOT
2996
+
2997
+ super
2998
+ end
2999
+
3000
+ # Visit a LocalVariableReadNode node.
3001
+ def visit_local_variable_read_node(node)
3002
+ table = Table.new("LocalVariableReadNode")
3003
+ id = node_id(node)
3004
+
3005
+ # name
3006
+ table.field("name", node.name.inspect)
3007
+
3008
+ # depth
3009
+ table.field("depth", node.depth.inspect)
3010
+
3011
+ digraph.nodes << <<~DOT
3012
+ #{id} [
3013
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3014
+ ];
3015
+ DOT
3016
+
3017
+ super
3018
+ end
3019
+
3020
+ # Visit a LocalVariableTargetNode node.
3021
+ def visit_local_variable_target_node(node)
3022
+ table = Table.new("LocalVariableTargetNode")
3023
+ id = node_id(node)
3024
+
3025
+ # name
3026
+ table.field("name", node.name.inspect)
3027
+
3028
+ # depth
3029
+ table.field("depth", node.depth.inspect)
3030
+
3031
+ digraph.nodes << <<~DOT
3032
+ #{id} [
3033
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3034
+ ];
3035
+ DOT
3036
+
3037
+ super
3038
+ end
3039
+
3040
+ # Visit a LocalVariableWriteNode node.
3041
+ def visit_local_variable_write_node(node)
3042
+ table = Table.new("LocalVariableWriteNode")
3043
+ id = node_id(node)
3044
+
3045
+ # name
3046
+ table.field("name", node.name.inspect)
3047
+
3048
+ # depth
3049
+ table.field("depth", node.depth.inspect)
3050
+
3051
+ # name_loc
3052
+ table.field("name_loc", location_inspect(node.name_loc))
3053
+
3054
+ # value
3055
+ table.field("value", port: true)
3056
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
3057
+
3058
+ # operator_loc
3059
+ table.field("operator_loc", location_inspect(node.operator_loc))
3060
+
3061
+ digraph.nodes << <<~DOT
3062
+ #{id} [
3063
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3064
+ ];
3065
+ DOT
3066
+
3067
+ super
3068
+ end
3069
+
3070
+ # Visit a MatchLastLineNode node.
3071
+ def visit_match_last_line_node(node)
3072
+ table = Table.new("MatchLastLineNode")
3073
+ id = node_id(node)
3074
+
3075
+ # flags
3076
+ table.field("flags", regular_expression_flags_inspect(node))
3077
+
3078
+ # opening_loc
3079
+ table.field("opening_loc", location_inspect(node.opening_loc))
3080
+
3081
+ # content_loc
3082
+ table.field("content_loc", location_inspect(node.content_loc))
3083
+
3084
+ # closing_loc
3085
+ table.field("closing_loc", location_inspect(node.closing_loc))
3086
+
3087
+ # unescaped
3088
+ table.field("unescaped", node.unescaped.inspect)
3089
+
3090
+ digraph.nodes << <<~DOT
3091
+ #{id} [
3092
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3093
+ ];
3094
+ DOT
3095
+
3096
+ super
3097
+ end
3098
+
3099
+ # Visit a MatchPredicateNode node.
3100
+ def visit_match_predicate_node(node)
3101
+ table = Table.new("MatchPredicateNode")
3102
+ id = node_id(node)
3103
+
3104
+ # value
3105
+ table.field("value", port: true)
3106
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
3107
+
3108
+ # pattern
3109
+ table.field("pattern", port: true)
3110
+ digraph.edge("#{id}:pattern -> #{node_id(node.pattern)};")
3111
+
3112
+ # operator_loc
3113
+ table.field("operator_loc", location_inspect(node.operator_loc))
3114
+
3115
+ digraph.nodes << <<~DOT
3116
+ #{id} [
3117
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3118
+ ];
3119
+ DOT
3120
+
3121
+ super
3122
+ end
3123
+
3124
+ # Visit a MatchRequiredNode node.
3125
+ def visit_match_required_node(node)
3126
+ table = Table.new("MatchRequiredNode")
3127
+ id = node_id(node)
3128
+
3129
+ # value
3130
+ table.field("value", port: true)
3131
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
3132
+
3133
+ # pattern
3134
+ table.field("pattern", port: true)
3135
+ digraph.edge("#{id}:pattern -> #{node_id(node.pattern)};")
3136
+
3137
+ # operator_loc
3138
+ table.field("operator_loc", location_inspect(node.operator_loc))
3139
+
3140
+ digraph.nodes << <<~DOT
3141
+ #{id} [
3142
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3143
+ ];
3144
+ DOT
3145
+
3146
+ super
3147
+ end
3148
+
3149
+ # Visit a MatchWriteNode node.
3150
+ def visit_match_write_node(node)
3151
+ table = Table.new("MatchWriteNode")
3152
+ id = node_id(node)
3153
+
3154
+ # call
3155
+ table.field("call", port: true)
3156
+ digraph.edge("#{id}:call -> #{node_id(node.call)};")
3157
+
3158
+ # targets
3159
+ if node.targets.any?
3160
+ table.field("targets", port: true)
3161
+
3162
+ waypoint = "#{id}_targets"
3163
+ digraph.waypoint("#{waypoint};")
3164
+
3165
+ digraph.edge("#{id}:targets -> #{waypoint};")
3166
+ node.targets.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3167
+ else
3168
+ table.field("targets", "[]")
3169
+ end
3170
+
3171
+ digraph.nodes << <<~DOT
3172
+ #{id} [
3173
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3174
+ ];
3175
+ DOT
3176
+
3177
+ super
3178
+ end
3179
+
3180
+ # Visit a MissingNode node.
3181
+ def visit_missing_node(node)
3182
+ table = Table.new("MissingNode")
3183
+ id = node_id(node)
3184
+
3185
+ digraph.nodes << <<~DOT
3186
+ #{id} [
3187
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3188
+ ];
3189
+ DOT
3190
+
3191
+ super
3192
+ end
3193
+
3194
+ # Visit a ModuleNode node.
3195
+ def visit_module_node(node)
3196
+ table = Table.new("ModuleNode")
3197
+ id = node_id(node)
3198
+
3199
+ # locals
3200
+ table.field("locals", node.locals.inspect)
3201
+
3202
+ # module_keyword_loc
3203
+ table.field("module_keyword_loc", location_inspect(node.module_keyword_loc))
3204
+
3205
+ # constant_path
3206
+ table.field("constant_path", port: true)
3207
+ digraph.edge("#{id}:constant_path -> #{node_id(node.constant_path)};")
3208
+
3209
+ # body
3210
+ unless (body = node.body).nil?
3211
+ table.field("body", port: true)
3212
+ digraph.edge("#{id}:body -> #{node_id(body)};")
3213
+ end
3214
+
3215
+ # end_keyword_loc
3216
+ table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
3217
+
3218
+ # name
3219
+ table.field("name", node.name.inspect)
3220
+
3221
+ digraph.nodes << <<~DOT
3222
+ #{id} [
3223
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3224
+ ];
3225
+ DOT
3226
+
3227
+ super
3228
+ end
3229
+
3230
+ # Visit a MultiTargetNode node.
3231
+ def visit_multi_target_node(node)
3232
+ table = Table.new("MultiTargetNode")
3233
+ id = node_id(node)
3234
+
3235
+ # lefts
3236
+ if node.lefts.any?
3237
+ table.field("lefts", port: true)
3238
+
3239
+ waypoint = "#{id}_lefts"
3240
+ digraph.waypoint("#{waypoint};")
3241
+
3242
+ digraph.edge("#{id}:lefts -> #{waypoint};")
3243
+ node.lefts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3244
+ else
3245
+ table.field("lefts", "[]")
3246
+ end
3247
+
3248
+ # rest
3249
+ unless (rest = node.rest).nil?
3250
+ table.field("rest", port: true)
3251
+ digraph.edge("#{id}:rest -> #{node_id(rest)};")
3252
+ end
3253
+
3254
+ # rights
3255
+ if node.rights.any?
3256
+ table.field("rights", port: true)
3257
+
3258
+ waypoint = "#{id}_rights"
3259
+ digraph.waypoint("#{waypoint};")
3260
+
3261
+ digraph.edge("#{id}:rights -> #{waypoint};")
3262
+ node.rights.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3263
+ else
3264
+ table.field("rights", "[]")
3265
+ end
3266
+
3267
+ # lparen_loc
3268
+ unless (lparen_loc = node.lparen_loc).nil?
3269
+ table.field("lparen_loc", location_inspect(lparen_loc))
3270
+ end
3271
+
3272
+ # rparen_loc
3273
+ unless (rparen_loc = node.rparen_loc).nil?
3274
+ table.field("rparen_loc", location_inspect(rparen_loc))
3275
+ end
3276
+
3277
+ digraph.nodes << <<~DOT
3278
+ #{id} [
3279
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3280
+ ];
3281
+ DOT
3282
+
3283
+ super
3284
+ end
3285
+
3286
+ # Visit a MultiWriteNode node.
3287
+ def visit_multi_write_node(node)
3288
+ table = Table.new("MultiWriteNode")
3289
+ id = node_id(node)
3290
+
3291
+ # lefts
3292
+ if node.lefts.any?
3293
+ table.field("lefts", port: true)
3294
+
3295
+ waypoint = "#{id}_lefts"
3296
+ digraph.waypoint("#{waypoint};")
3297
+
3298
+ digraph.edge("#{id}:lefts -> #{waypoint};")
3299
+ node.lefts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3300
+ else
3301
+ table.field("lefts", "[]")
3302
+ end
3303
+
3304
+ # rest
3305
+ unless (rest = node.rest).nil?
3306
+ table.field("rest", port: true)
3307
+ digraph.edge("#{id}:rest -> #{node_id(rest)};")
3308
+ end
3309
+
3310
+ # rights
3311
+ if node.rights.any?
3312
+ table.field("rights", port: true)
3313
+
3314
+ waypoint = "#{id}_rights"
3315
+ digraph.waypoint("#{waypoint};")
3316
+
3317
+ digraph.edge("#{id}:rights -> #{waypoint};")
3318
+ node.rights.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3319
+ else
3320
+ table.field("rights", "[]")
3321
+ end
3322
+
3323
+ # lparen_loc
3324
+ unless (lparen_loc = node.lparen_loc).nil?
3325
+ table.field("lparen_loc", location_inspect(lparen_loc))
3326
+ end
3327
+
3328
+ # rparen_loc
3329
+ unless (rparen_loc = node.rparen_loc).nil?
3330
+ table.field("rparen_loc", location_inspect(rparen_loc))
3331
+ end
3332
+
3333
+ # operator_loc
3334
+ table.field("operator_loc", location_inspect(node.operator_loc))
3335
+
3336
+ # value
3337
+ table.field("value", port: true)
3338
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
3339
+
3340
+ digraph.nodes << <<~DOT
3341
+ #{id} [
3342
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3343
+ ];
3344
+ DOT
3345
+
3346
+ super
3347
+ end
3348
+
3349
+ # Visit a NextNode node.
3350
+ def visit_next_node(node)
3351
+ table = Table.new("NextNode")
3352
+ id = node_id(node)
3353
+
3354
+ # arguments
3355
+ unless (arguments = node.arguments).nil?
3356
+ table.field("arguments", port: true)
3357
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
3358
+ end
3359
+
3360
+ # keyword_loc
3361
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
3362
+
3363
+ digraph.nodes << <<~DOT
3364
+ #{id} [
3365
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3366
+ ];
3367
+ DOT
3368
+
3369
+ super
3370
+ end
3371
+
3372
+ # Visit a NilNode node.
3373
+ def visit_nil_node(node)
3374
+ table = Table.new("NilNode")
3375
+ id = node_id(node)
3376
+
3377
+ digraph.nodes << <<~DOT
3378
+ #{id} [
3379
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3380
+ ];
3381
+ DOT
3382
+
3383
+ super
3384
+ end
3385
+
3386
+ # Visit a NoKeywordsParameterNode node.
3387
+ def visit_no_keywords_parameter_node(node)
3388
+ table = Table.new("NoKeywordsParameterNode")
3389
+ id = node_id(node)
3390
+
3391
+ # operator_loc
3392
+ table.field("operator_loc", location_inspect(node.operator_loc))
3393
+
3394
+ # keyword_loc
3395
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
3396
+
3397
+ digraph.nodes << <<~DOT
3398
+ #{id} [
3399
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3400
+ ];
3401
+ DOT
3402
+
3403
+ super
3404
+ end
3405
+
3406
+ # Visit a NumberedParametersNode node.
3407
+ def visit_numbered_parameters_node(node)
3408
+ table = Table.new("NumberedParametersNode")
3409
+ id = node_id(node)
3410
+
3411
+ # maximum
3412
+ table.field("maximum", node.maximum.inspect)
3413
+
3414
+ digraph.nodes << <<~DOT
3415
+ #{id} [
3416
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3417
+ ];
3418
+ DOT
3419
+
3420
+ super
3421
+ end
3422
+
3423
+ # Visit a NumberedReferenceReadNode node.
3424
+ def visit_numbered_reference_read_node(node)
3425
+ table = Table.new("NumberedReferenceReadNode")
3426
+ id = node_id(node)
3427
+
3428
+ # number
3429
+ table.field("number", node.number.inspect)
3430
+
3431
+ digraph.nodes << <<~DOT
3432
+ #{id} [
3433
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3434
+ ];
3435
+ DOT
3436
+
3437
+ super
3438
+ end
3439
+
3440
+ # Visit a OptionalKeywordParameterNode node.
3441
+ def visit_optional_keyword_parameter_node(node)
3442
+ table = Table.new("OptionalKeywordParameterNode")
3443
+ id = node_id(node)
3444
+
3445
+ # flags
3446
+ table.field("flags", parameter_flags_inspect(node))
3447
+
3448
+ # name
3449
+ table.field("name", node.name.inspect)
3450
+
3451
+ # name_loc
3452
+ table.field("name_loc", location_inspect(node.name_loc))
3453
+
3454
+ # value
3455
+ table.field("value", port: true)
3456
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
3457
+
3458
+ digraph.nodes << <<~DOT
3459
+ #{id} [
3460
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3461
+ ];
3462
+ DOT
3463
+
3464
+ super
3465
+ end
3466
+
3467
+ # Visit a OptionalParameterNode node.
3468
+ def visit_optional_parameter_node(node)
3469
+ table = Table.new("OptionalParameterNode")
3470
+ id = node_id(node)
3471
+
3472
+ # flags
3473
+ table.field("flags", parameter_flags_inspect(node))
3474
+
3475
+ # name
3476
+ table.field("name", node.name.inspect)
3477
+
3478
+ # name_loc
3479
+ table.field("name_loc", location_inspect(node.name_loc))
3480
+
3481
+ # operator_loc
3482
+ table.field("operator_loc", location_inspect(node.operator_loc))
3483
+
3484
+ # value
3485
+ table.field("value", port: true)
3486
+ digraph.edge("#{id}:value -> #{node_id(node.value)};")
3487
+
3488
+ digraph.nodes << <<~DOT
3489
+ #{id} [
3490
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3491
+ ];
3492
+ DOT
3493
+
3494
+ super
3495
+ end
3496
+
3497
+ # Visit a OrNode node.
3498
+ def visit_or_node(node)
3499
+ table = Table.new("OrNode")
3500
+ id = node_id(node)
3501
+
3502
+ # left
3503
+ table.field("left", port: true)
3504
+ digraph.edge("#{id}:left -> #{node_id(node.left)};")
3505
+
3506
+ # right
3507
+ table.field("right", port: true)
3508
+ digraph.edge("#{id}:right -> #{node_id(node.right)};")
3509
+
3510
+ # operator_loc
3511
+ table.field("operator_loc", location_inspect(node.operator_loc))
3512
+
3513
+ digraph.nodes << <<~DOT
3514
+ #{id} [
3515
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3516
+ ];
3517
+ DOT
3518
+
3519
+ super
3520
+ end
3521
+
3522
+ # Visit a ParametersNode node.
3523
+ def visit_parameters_node(node)
3524
+ table = Table.new("ParametersNode")
3525
+ id = node_id(node)
3526
+
3527
+ # requireds
3528
+ if node.requireds.any?
3529
+ table.field("requireds", port: true)
3530
+
3531
+ waypoint = "#{id}_requireds"
3532
+ digraph.waypoint("#{waypoint};")
3533
+
3534
+ digraph.edge("#{id}:requireds -> #{waypoint};")
3535
+ node.requireds.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3536
+ else
3537
+ table.field("requireds", "[]")
3538
+ end
3539
+
3540
+ # optionals
3541
+ if node.optionals.any?
3542
+ table.field("optionals", port: true)
3543
+
3544
+ waypoint = "#{id}_optionals"
3545
+ digraph.waypoint("#{waypoint};")
3546
+
3547
+ digraph.edge("#{id}:optionals -> #{waypoint};")
3548
+ node.optionals.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3549
+ else
3550
+ table.field("optionals", "[]")
3551
+ end
3552
+
3553
+ # rest
3554
+ unless (rest = node.rest).nil?
3555
+ table.field("rest", port: true)
3556
+ digraph.edge("#{id}:rest -> #{node_id(rest)};")
3557
+ end
3558
+
3559
+ # posts
3560
+ if node.posts.any?
3561
+ table.field("posts", port: true)
3562
+
3563
+ waypoint = "#{id}_posts"
3564
+ digraph.waypoint("#{waypoint};")
3565
+
3566
+ digraph.edge("#{id}:posts -> #{waypoint};")
3567
+ node.posts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3568
+ else
3569
+ table.field("posts", "[]")
3570
+ end
3571
+
3572
+ # keywords
3573
+ if node.keywords.any?
3574
+ table.field("keywords", port: true)
3575
+
3576
+ waypoint = "#{id}_keywords"
3577
+ digraph.waypoint("#{waypoint};")
3578
+
3579
+ digraph.edge("#{id}:keywords -> #{waypoint};")
3580
+ node.keywords.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3581
+ else
3582
+ table.field("keywords", "[]")
3583
+ end
3584
+
3585
+ # keyword_rest
3586
+ unless (keyword_rest = node.keyword_rest).nil?
3587
+ table.field("keyword_rest", port: true)
3588
+ digraph.edge("#{id}:keyword_rest -> #{node_id(keyword_rest)};")
3589
+ end
3590
+
3591
+ # block
3592
+ unless (block = node.block).nil?
3593
+ table.field("block", port: true)
3594
+ digraph.edge("#{id}:block -> #{node_id(block)};")
3595
+ end
3596
+
3597
+ digraph.nodes << <<~DOT
3598
+ #{id} [
3599
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3600
+ ];
3601
+ DOT
3602
+
3603
+ super
3604
+ end
3605
+
3606
+ # Visit a ParenthesesNode node.
3607
+ def visit_parentheses_node(node)
3608
+ table = Table.new("ParenthesesNode")
3609
+ id = node_id(node)
3610
+
3611
+ # flags
3612
+ table.field("flags", parentheses_node_flags_inspect(node))
3613
+
3614
+ # body
3615
+ unless (body = node.body).nil?
3616
+ table.field("body", port: true)
3617
+ digraph.edge("#{id}:body -> #{node_id(body)};")
3618
+ end
3619
+
3620
+ # opening_loc
3621
+ table.field("opening_loc", location_inspect(node.opening_loc))
3622
+
3623
+ # closing_loc
3624
+ table.field("closing_loc", location_inspect(node.closing_loc))
3625
+
3626
+ digraph.nodes << <<~DOT
3627
+ #{id} [
3628
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3629
+ ];
3630
+ DOT
3631
+
3632
+ super
3633
+ end
3634
+
3635
+ # Visit a PinnedExpressionNode node.
3636
+ def visit_pinned_expression_node(node)
3637
+ table = Table.new("PinnedExpressionNode")
3638
+ id = node_id(node)
3639
+
3640
+ # expression
3641
+ table.field("expression", port: true)
3642
+ digraph.edge("#{id}:expression -> #{node_id(node.expression)};")
3643
+
3644
+ # operator_loc
3645
+ table.field("operator_loc", location_inspect(node.operator_loc))
3646
+
3647
+ # lparen_loc
3648
+ table.field("lparen_loc", location_inspect(node.lparen_loc))
3649
+
3650
+ # rparen_loc
3651
+ table.field("rparen_loc", location_inspect(node.rparen_loc))
3652
+
3653
+ digraph.nodes << <<~DOT
3654
+ #{id} [
3655
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3656
+ ];
3657
+ DOT
3658
+
3659
+ super
3660
+ end
3661
+
3662
+ # Visit a PinnedVariableNode node.
3663
+ def visit_pinned_variable_node(node)
3664
+ table = Table.new("PinnedVariableNode")
3665
+ id = node_id(node)
3666
+
3667
+ # variable
3668
+ table.field("variable", port: true)
3669
+ digraph.edge("#{id}:variable -> #{node_id(node.variable)};")
3670
+
3671
+ # operator_loc
3672
+ table.field("operator_loc", location_inspect(node.operator_loc))
3673
+
3674
+ digraph.nodes << <<~DOT
3675
+ #{id} [
3676
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3677
+ ];
3678
+ DOT
3679
+
3680
+ super
3681
+ end
3682
+
3683
+ # Visit a PostExecutionNode node.
3684
+ def visit_post_execution_node(node)
3685
+ table = Table.new("PostExecutionNode")
3686
+ id = node_id(node)
3687
+
3688
+ # statements
3689
+ unless (statements = node.statements).nil?
3690
+ table.field("statements", port: true)
3691
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
3692
+ end
3693
+
3694
+ # keyword_loc
3695
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
3696
+
3697
+ # opening_loc
3698
+ table.field("opening_loc", location_inspect(node.opening_loc))
3699
+
3700
+ # closing_loc
3701
+ table.field("closing_loc", location_inspect(node.closing_loc))
3702
+
3703
+ digraph.nodes << <<~DOT
3704
+ #{id} [
3705
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3706
+ ];
3707
+ DOT
3708
+
3709
+ super
3710
+ end
3711
+
3712
+ # Visit a PreExecutionNode node.
3713
+ def visit_pre_execution_node(node)
3714
+ table = Table.new("PreExecutionNode")
3715
+ id = node_id(node)
3716
+
3717
+ # statements
3718
+ unless (statements = node.statements).nil?
3719
+ table.field("statements", port: true)
3720
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
3721
+ end
3722
+
3723
+ # keyword_loc
3724
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
3725
+
3726
+ # opening_loc
3727
+ table.field("opening_loc", location_inspect(node.opening_loc))
3728
+
3729
+ # closing_loc
3730
+ table.field("closing_loc", location_inspect(node.closing_loc))
3731
+
3732
+ digraph.nodes << <<~DOT
3733
+ #{id} [
3734
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3735
+ ];
3736
+ DOT
3737
+
3738
+ super
3739
+ end
3740
+
3741
+ # Visit a ProgramNode node.
3742
+ def visit_program_node(node)
3743
+ table = Table.new("ProgramNode")
3744
+ id = node_id(node)
3745
+
3746
+ # locals
3747
+ table.field("locals", node.locals.inspect)
3748
+
3749
+ # statements
3750
+ table.field("statements", port: true)
3751
+ digraph.edge("#{id}:statements -> #{node_id(node.statements)};")
3752
+
3753
+ digraph.nodes << <<~DOT
3754
+ #{id} [
3755
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3756
+ ];
3757
+ DOT
3758
+
3759
+ super
3760
+ end
3761
+
3762
+ # Visit a RangeNode node.
3763
+ def visit_range_node(node)
3764
+ table = Table.new("RangeNode")
3765
+ id = node_id(node)
3766
+
3767
+ # flags
3768
+ table.field("flags", range_flags_inspect(node))
3769
+
3770
+ # left
3771
+ unless (left = node.left).nil?
3772
+ table.field("left", port: true)
3773
+ digraph.edge("#{id}:left -> #{node_id(left)};")
3774
+ end
3775
+
3776
+ # right
3777
+ unless (right = node.right).nil?
3778
+ table.field("right", port: true)
3779
+ digraph.edge("#{id}:right -> #{node_id(right)};")
3780
+ end
3781
+
3782
+ # operator_loc
3783
+ table.field("operator_loc", location_inspect(node.operator_loc))
3784
+
3785
+ digraph.nodes << <<~DOT
3786
+ #{id} [
3787
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3788
+ ];
3789
+ DOT
3790
+
3791
+ super
3792
+ end
3793
+
3794
+ # Visit a RationalNode node.
3795
+ def visit_rational_node(node)
3796
+ table = Table.new("RationalNode")
3797
+ id = node_id(node)
3798
+
3799
+ # flags
3800
+ table.field("flags", integer_base_flags_inspect(node))
3801
+
3802
+ # numerator
3803
+ table.field("numerator", node.numerator.inspect)
3804
+
3805
+ # denominator
3806
+ table.field("denominator", node.denominator.inspect)
3807
+
3808
+ digraph.nodes << <<~DOT
3809
+ #{id} [
3810
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3811
+ ];
3812
+ DOT
3813
+
3814
+ super
3815
+ end
3816
+
3817
+ # Visit a RedoNode node.
3818
+ def visit_redo_node(node)
3819
+ table = Table.new("RedoNode")
3820
+ id = node_id(node)
3821
+
3822
+ digraph.nodes << <<~DOT
3823
+ #{id} [
3824
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3825
+ ];
3826
+ DOT
3827
+
3828
+ super
3829
+ end
3830
+
3831
+ # Visit a RegularExpressionNode node.
3832
+ def visit_regular_expression_node(node)
3833
+ table = Table.new("RegularExpressionNode")
3834
+ id = node_id(node)
3835
+
3836
+ # flags
3837
+ table.field("flags", regular_expression_flags_inspect(node))
3838
+
3839
+ # opening_loc
3840
+ table.field("opening_loc", location_inspect(node.opening_loc))
3841
+
3842
+ # content_loc
3843
+ table.field("content_loc", location_inspect(node.content_loc))
3844
+
3845
+ # closing_loc
3846
+ table.field("closing_loc", location_inspect(node.closing_loc))
3847
+
3848
+ # unescaped
3849
+ table.field("unescaped", node.unescaped.inspect)
3850
+
3851
+ digraph.nodes << <<~DOT
3852
+ #{id} [
3853
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3854
+ ];
3855
+ DOT
3856
+
3857
+ super
3858
+ end
3859
+
3860
+ # Visit a RequiredKeywordParameterNode node.
3861
+ def visit_required_keyword_parameter_node(node)
3862
+ table = Table.new("RequiredKeywordParameterNode")
3863
+ id = node_id(node)
3864
+
3865
+ # flags
3866
+ table.field("flags", parameter_flags_inspect(node))
3867
+
3868
+ # name
3869
+ table.field("name", node.name.inspect)
3870
+
3871
+ # name_loc
3872
+ table.field("name_loc", location_inspect(node.name_loc))
3873
+
3874
+ digraph.nodes << <<~DOT
3875
+ #{id} [
3876
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3877
+ ];
3878
+ DOT
3879
+
3880
+ super
3881
+ end
3882
+
3883
+ # Visit a RequiredParameterNode node.
3884
+ def visit_required_parameter_node(node)
3885
+ table = Table.new("RequiredParameterNode")
3886
+ id = node_id(node)
3887
+
3888
+ # flags
3889
+ table.field("flags", parameter_flags_inspect(node))
3890
+
3891
+ # name
3892
+ table.field("name", node.name.inspect)
3893
+
3894
+ digraph.nodes << <<~DOT
3895
+ #{id} [
3896
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3897
+ ];
3898
+ DOT
3899
+
3900
+ super
3901
+ end
3902
+
3903
+ # Visit a RescueModifierNode node.
3904
+ def visit_rescue_modifier_node(node)
3905
+ table = Table.new("RescueModifierNode")
3906
+ id = node_id(node)
3907
+
3908
+ # expression
3909
+ table.field("expression", port: true)
3910
+ digraph.edge("#{id}:expression -> #{node_id(node.expression)};")
3911
+
3912
+ # keyword_loc
3913
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
3914
+
3915
+ # rescue_expression
3916
+ table.field("rescue_expression", port: true)
3917
+ digraph.edge("#{id}:rescue_expression -> #{node_id(node.rescue_expression)};")
3918
+
3919
+ digraph.nodes << <<~DOT
3920
+ #{id} [
3921
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3922
+ ];
3923
+ DOT
3924
+
3925
+ super
3926
+ end
3927
+
3928
+ # Visit a RescueNode node.
3929
+ def visit_rescue_node(node)
3930
+ table = Table.new("RescueNode")
3931
+ id = node_id(node)
3932
+
3933
+ # keyword_loc
3934
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
3935
+
3936
+ # exceptions
3937
+ if node.exceptions.any?
3938
+ table.field("exceptions", port: true)
3939
+
3940
+ waypoint = "#{id}_exceptions"
3941
+ digraph.waypoint("#{waypoint};")
3942
+
3943
+ digraph.edge("#{id}:exceptions -> #{waypoint};")
3944
+ node.exceptions.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
3945
+ else
3946
+ table.field("exceptions", "[]")
3947
+ end
3948
+
3949
+ # operator_loc
3950
+ unless (operator_loc = node.operator_loc).nil?
3951
+ table.field("operator_loc", location_inspect(operator_loc))
3952
+ end
3953
+
3954
+ # reference
3955
+ unless (reference = node.reference).nil?
3956
+ table.field("reference", port: true)
3957
+ digraph.edge("#{id}:reference -> #{node_id(reference)};")
3958
+ end
3959
+
3960
+ # then_keyword_loc
3961
+ unless (then_keyword_loc = node.then_keyword_loc).nil?
3962
+ table.field("then_keyword_loc", location_inspect(then_keyword_loc))
3963
+ end
3964
+
3965
+ # statements
3966
+ unless (statements = node.statements).nil?
3967
+ table.field("statements", port: true)
3968
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
3969
+ end
3970
+
3971
+ # subsequent
3972
+ unless (subsequent = node.subsequent).nil?
3973
+ table.field("subsequent", port: true)
3974
+ digraph.edge("#{id}:subsequent -> #{node_id(subsequent)};")
3975
+ end
3976
+
3977
+ digraph.nodes << <<~DOT
3978
+ #{id} [
3979
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
3980
+ ];
3981
+ DOT
3982
+
3983
+ super
3984
+ end
3985
+
3986
+ # Visit a RestParameterNode node.
3987
+ def visit_rest_parameter_node(node)
3988
+ table = Table.new("RestParameterNode")
3989
+ id = node_id(node)
3990
+
3991
+ # flags
3992
+ table.field("flags", parameter_flags_inspect(node))
3993
+
3994
+ # name
3995
+ table.field("name", node.name.inspect)
3996
+
3997
+ # name_loc
3998
+ unless (name_loc = node.name_loc).nil?
3999
+ table.field("name_loc", location_inspect(name_loc))
4000
+ end
4001
+
4002
+ # operator_loc
4003
+ table.field("operator_loc", location_inspect(node.operator_loc))
4004
+
4005
+ digraph.nodes << <<~DOT
4006
+ #{id} [
4007
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4008
+ ];
4009
+ DOT
4010
+
4011
+ super
4012
+ end
4013
+
4014
+ # Visit a RetryNode node.
4015
+ def visit_retry_node(node)
4016
+ table = Table.new("RetryNode")
4017
+ id = node_id(node)
4018
+
4019
+ digraph.nodes << <<~DOT
4020
+ #{id} [
4021
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4022
+ ];
4023
+ DOT
4024
+
4025
+ super
4026
+ end
4027
+
4028
+ # Visit a ReturnNode node.
4029
+ def visit_return_node(node)
4030
+ table = Table.new("ReturnNode")
4031
+ id = node_id(node)
4032
+
4033
+ # keyword_loc
4034
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4035
+
4036
+ # arguments
4037
+ unless (arguments = node.arguments).nil?
4038
+ table.field("arguments", port: true)
4039
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
4040
+ end
4041
+
4042
+ digraph.nodes << <<~DOT
4043
+ #{id} [
4044
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4045
+ ];
4046
+ DOT
4047
+
4048
+ super
4049
+ end
4050
+
4051
+ # Visit a SelfNode node.
4052
+ def visit_self_node(node)
4053
+ table = Table.new("SelfNode")
4054
+ id = node_id(node)
4055
+
4056
+ digraph.nodes << <<~DOT
4057
+ #{id} [
4058
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4059
+ ];
4060
+ DOT
4061
+
4062
+ super
4063
+ end
4064
+
4065
+ # Visit a ShareableConstantNode node.
4066
+ def visit_shareable_constant_node(node)
4067
+ table = Table.new("ShareableConstantNode")
4068
+ id = node_id(node)
4069
+
4070
+ # flags
4071
+ table.field("flags", shareable_constant_node_flags_inspect(node))
4072
+
4073
+ # write
4074
+ table.field("write", port: true)
4075
+ digraph.edge("#{id}:write -> #{node_id(node.write)};")
4076
+
4077
+ digraph.nodes << <<~DOT
4078
+ #{id} [
4079
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4080
+ ];
4081
+ DOT
4082
+
4083
+ super
4084
+ end
4085
+
4086
+ # Visit a SingletonClassNode node.
4087
+ def visit_singleton_class_node(node)
4088
+ table = Table.new("SingletonClassNode")
4089
+ id = node_id(node)
4090
+
4091
+ # locals
4092
+ table.field("locals", node.locals.inspect)
4093
+
4094
+ # class_keyword_loc
4095
+ table.field("class_keyword_loc", location_inspect(node.class_keyword_loc))
4096
+
4097
+ # operator_loc
4098
+ table.field("operator_loc", location_inspect(node.operator_loc))
4099
+
4100
+ # expression
4101
+ table.field("expression", port: true)
4102
+ digraph.edge("#{id}:expression -> #{node_id(node.expression)};")
4103
+
4104
+ # body
4105
+ unless (body = node.body).nil?
4106
+ table.field("body", port: true)
4107
+ digraph.edge("#{id}:body -> #{node_id(body)};")
4108
+ end
4109
+
4110
+ # end_keyword_loc
4111
+ table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
4112
+
4113
+ digraph.nodes << <<~DOT
4114
+ #{id} [
4115
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4116
+ ];
4117
+ DOT
4118
+
4119
+ super
4120
+ end
4121
+
4122
+ # Visit a SourceEncodingNode node.
4123
+ def visit_source_encoding_node(node)
4124
+ table = Table.new("SourceEncodingNode")
4125
+ id = node_id(node)
4126
+
4127
+ digraph.nodes << <<~DOT
4128
+ #{id} [
4129
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4130
+ ];
4131
+ DOT
4132
+
4133
+ super
4134
+ end
4135
+
4136
+ # Visit a SourceFileNode node.
4137
+ def visit_source_file_node(node)
4138
+ table = Table.new("SourceFileNode")
4139
+ id = node_id(node)
4140
+
4141
+ # flags
4142
+ table.field("flags", string_flags_inspect(node))
4143
+
4144
+ # filepath
4145
+ table.field("filepath", node.filepath.inspect)
4146
+
4147
+ digraph.nodes << <<~DOT
4148
+ #{id} [
4149
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4150
+ ];
4151
+ DOT
4152
+
4153
+ super
4154
+ end
4155
+
4156
+ # Visit a SourceLineNode node.
4157
+ def visit_source_line_node(node)
4158
+ table = Table.new("SourceLineNode")
4159
+ id = node_id(node)
4160
+
4161
+ digraph.nodes << <<~DOT
4162
+ #{id} [
4163
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4164
+ ];
4165
+ DOT
4166
+
4167
+ super
4168
+ end
4169
+
4170
+ # Visit a SplatNode node.
4171
+ def visit_splat_node(node)
4172
+ table = Table.new("SplatNode")
4173
+ id = node_id(node)
4174
+
4175
+ # operator_loc
4176
+ table.field("operator_loc", location_inspect(node.operator_loc))
4177
+
4178
+ # expression
4179
+ unless (expression = node.expression).nil?
4180
+ table.field("expression", port: true)
4181
+ digraph.edge("#{id}:expression -> #{node_id(expression)};")
4182
+ end
4183
+
4184
+ digraph.nodes << <<~DOT
4185
+ #{id} [
4186
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4187
+ ];
4188
+ DOT
4189
+
4190
+ super
4191
+ end
4192
+
4193
+ # Visit a StatementsNode node.
4194
+ def visit_statements_node(node)
4195
+ table = Table.new("StatementsNode")
4196
+ id = node_id(node)
4197
+
4198
+ # body
4199
+ if node.body.any?
4200
+ table.field("body", port: true)
4201
+
4202
+ waypoint = "#{id}_body"
4203
+ digraph.waypoint("#{waypoint};")
4204
+
4205
+ digraph.edge("#{id}:body -> #{waypoint};")
4206
+ node.body.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
4207
+ else
4208
+ table.field("body", "[]")
4209
+ end
4210
+
4211
+ digraph.nodes << <<~DOT
4212
+ #{id} [
4213
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4214
+ ];
4215
+ DOT
4216
+
4217
+ super
4218
+ end
4219
+
4220
+ # Visit a StringNode node.
4221
+ def visit_string_node(node)
4222
+ table = Table.new("StringNode")
4223
+ id = node_id(node)
4224
+
4225
+ # flags
4226
+ table.field("flags", string_flags_inspect(node))
4227
+
4228
+ # opening_loc
4229
+ unless (opening_loc = node.opening_loc).nil?
4230
+ table.field("opening_loc", location_inspect(opening_loc))
4231
+ end
4232
+
4233
+ # content_loc
4234
+ table.field("content_loc", location_inspect(node.content_loc))
4235
+
4236
+ # closing_loc
4237
+ unless (closing_loc = node.closing_loc).nil?
4238
+ table.field("closing_loc", location_inspect(closing_loc))
4239
+ end
4240
+
4241
+ # unescaped
4242
+ table.field("unescaped", node.unescaped.inspect)
4243
+
4244
+ digraph.nodes << <<~DOT
4245
+ #{id} [
4246
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4247
+ ];
4248
+ DOT
4249
+
4250
+ super
4251
+ end
4252
+
4253
+ # Visit a SuperNode node.
4254
+ def visit_super_node(node)
4255
+ table = Table.new("SuperNode")
4256
+ id = node_id(node)
4257
+
4258
+ # keyword_loc
4259
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4260
+
4261
+ # lparen_loc
4262
+ unless (lparen_loc = node.lparen_loc).nil?
4263
+ table.field("lparen_loc", location_inspect(lparen_loc))
4264
+ end
4265
+
4266
+ # arguments
4267
+ unless (arguments = node.arguments).nil?
4268
+ table.field("arguments", port: true)
4269
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
4270
+ end
4271
+
4272
+ # rparen_loc
4273
+ unless (rparen_loc = node.rparen_loc).nil?
4274
+ table.field("rparen_loc", location_inspect(rparen_loc))
4275
+ end
4276
+
4277
+ # block
4278
+ unless (block = node.block).nil?
4279
+ table.field("block", port: true)
4280
+ digraph.edge("#{id}:block -> #{node_id(block)};")
4281
+ end
4282
+
4283
+ digraph.nodes << <<~DOT
4284
+ #{id} [
4285
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4286
+ ];
4287
+ DOT
4288
+
4289
+ super
4290
+ end
4291
+
4292
+ # Visit a SymbolNode node.
4293
+ def visit_symbol_node(node)
4294
+ table = Table.new("SymbolNode")
4295
+ id = node_id(node)
4296
+
4297
+ # flags
4298
+ table.field("flags", symbol_flags_inspect(node))
4299
+
4300
+ # opening_loc
4301
+ unless (opening_loc = node.opening_loc).nil?
4302
+ table.field("opening_loc", location_inspect(opening_loc))
4303
+ end
4304
+
4305
+ # value_loc
4306
+ unless (value_loc = node.value_loc).nil?
4307
+ table.field("value_loc", location_inspect(value_loc))
4308
+ end
4309
+
4310
+ # closing_loc
4311
+ unless (closing_loc = node.closing_loc).nil?
4312
+ table.field("closing_loc", location_inspect(closing_loc))
4313
+ end
4314
+
4315
+ # unescaped
4316
+ table.field("unescaped", node.unescaped.inspect)
4317
+
4318
+ digraph.nodes << <<~DOT
4319
+ #{id} [
4320
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4321
+ ];
4322
+ DOT
4323
+
4324
+ super
4325
+ end
4326
+
4327
+ # Visit a TrueNode node.
4328
+ def visit_true_node(node)
4329
+ table = Table.new("TrueNode")
4330
+ id = node_id(node)
4331
+
4332
+ digraph.nodes << <<~DOT
4333
+ #{id} [
4334
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4335
+ ];
4336
+ DOT
4337
+
4338
+ super
4339
+ end
4340
+
4341
+ # Visit a UndefNode node.
4342
+ def visit_undef_node(node)
4343
+ table = Table.new("UndefNode")
4344
+ id = node_id(node)
4345
+
4346
+ # names
4347
+ if node.names.any?
4348
+ table.field("names", port: true)
4349
+
4350
+ waypoint = "#{id}_names"
4351
+ digraph.waypoint("#{waypoint};")
4352
+
4353
+ digraph.edge("#{id}:names -> #{waypoint};")
4354
+ node.names.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
4355
+ else
4356
+ table.field("names", "[]")
4357
+ end
4358
+
4359
+ # keyword_loc
4360
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4361
+
4362
+ digraph.nodes << <<~DOT
4363
+ #{id} [
4364
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4365
+ ];
4366
+ DOT
4367
+
4368
+ super
4369
+ end
4370
+
4371
+ # Visit a UnlessNode node.
4372
+ def visit_unless_node(node)
4373
+ table = Table.new("UnlessNode")
4374
+ id = node_id(node)
4375
+
4376
+ # keyword_loc
4377
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4378
+
4379
+ # predicate
4380
+ table.field("predicate", port: true)
4381
+ digraph.edge("#{id}:predicate -> #{node_id(node.predicate)};")
4382
+
4383
+ # then_keyword_loc
4384
+ unless (then_keyword_loc = node.then_keyword_loc).nil?
4385
+ table.field("then_keyword_loc", location_inspect(then_keyword_loc))
4386
+ end
4387
+
4388
+ # statements
4389
+ unless (statements = node.statements).nil?
4390
+ table.field("statements", port: true)
4391
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
4392
+ end
4393
+
4394
+ # else_clause
4395
+ unless (else_clause = node.else_clause).nil?
4396
+ table.field("else_clause", port: true)
4397
+ digraph.edge("#{id}:else_clause -> #{node_id(else_clause)};")
4398
+ end
4399
+
4400
+ # end_keyword_loc
4401
+ unless (end_keyword_loc = node.end_keyword_loc).nil?
4402
+ table.field("end_keyword_loc", location_inspect(end_keyword_loc))
4403
+ end
4404
+
4405
+ digraph.nodes << <<~DOT
4406
+ #{id} [
4407
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4408
+ ];
4409
+ DOT
4410
+
4411
+ super
4412
+ end
4413
+
4414
+ # Visit a UntilNode node.
4415
+ def visit_until_node(node)
4416
+ table = Table.new("UntilNode")
4417
+ id = node_id(node)
4418
+
4419
+ # flags
4420
+ table.field("flags", loop_flags_inspect(node))
4421
+
4422
+ # keyword_loc
4423
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4424
+
4425
+ # do_keyword_loc
4426
+ unless (do_keyword_loc = node.do_keyword_loc).nil?
4427
+ table.field("do_keyword_loc", location_inspect(do_keyword_loc))
4428
+ end
4429
+
4430
+ # closing_loc
4431
+ unless (closing_loc = node.closing_loc).nil?
4432
+ table.field("closing_loc", location_inspect(closing_loc))
4433
+ end
4434
+
4435
+ # predicate
4436
+ table.field("predicate", port: true)
4437
+ digraph.edge("#{id}:predicate -> #{node_id(node.predicate)};")
4438
+
4439
+ # statements
4440
+ unless (statements = node.statements).nil?
4441
+ table.field("statements", port: true)
4442
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
4443
+ end
4444
+
4445
+ digraph.nodes << <<~DOT
4446
+ #{id} [
4447
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4448
+ ];
4449
+ DOT
4450
+
4451
+ super
4452
+ end
4453
+
4454
+ # Visit a WhenNode node.
4455
+ def visit_when_node(node)
4456
+ table = Table.new("WhenNode")
4457
+ id = node_id(node)
4458
+
4459
+ # keyword_loc
4460
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4461
+
4462
+ # conditions
4463
+ if node.conditions.any?
4464
+ table.field("conditions", port: true)
4465
+
4466
+ waypoint = "#{id}_conditions"
4467
+ digraph.waypoint("#{waypoint};")
4468
+
4469
+ digraph.edge("#{id}:conditions -> #{waypoint};")
4470
+ node.conditions.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
4471
+ else
4472
+ table.field("conditions", "[]")
4473
+ end
4474
+
4475
+ # then_keyword_loc
4476
+ unless (then_keyword_loc = node.then_keyword_loc).nil?
4477
+ table.field("then_keyword_loc", location_inspect(then_keyword_loc))
4478
+ end
4479
+
4480
+ # statements
4481
+ unless (statements = node.statements).nil?
4482
+ table.field("statements", port: true)
4483
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
4484
+ end
4485
+
4486
+ digraph.nodes << <<~DOT
4487
+ #{id} [
4488
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4489
+ ];
4490
+ DOT
4491
+
4492
+ super
4493
+ end
4494
+
4495
+ # Visit a WhileNode node.
4496
+ def visit_while_node(node)
4497
+ table = Table.new("WhileNode")
4498
+ id = node_id(node)
4499
+
4500
+ # flags
4501
+ table.field("flags", loop_flags_inspect(node))
4502
+
4503
+ # keyword_loc
4504
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4505
+
4506
+ # do_keyword_loc
4507
+ unless (do_keyword_loc = node.do_keyword_loc).nil?
4508
+ table.field("do_keyword_loc", location_inspect(do_keyword_loc))
4509
+ end
4510
+
4511
+ # closing_loc
4512
+ unless (closing_loc = node.closing_loc).nil?
4513
+ table.field("closing_loc", location_inspect(closing_loc))
4514
+ end
4515
+
4516
+ # predicate
4517
+ table.field("predicate", port: true)
4518
+ digraph.edge("#{id}:predicate -> #{node_id(node.predicate)};")
4519
+
4520
+ # statements
4521
+ unless (statements = node.statements).nil?
4522
+ table.field("statements", port: true)
4523
+ digraph.edge("#{id}:statements -> #{node_id(statements)};")
4524
+ end
4525
+
4526
+ digraph.nodes << <<~DOT
4527
+ #{id} [
4528
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4529
+ ];
4530
+ DOT
4531
+
4532
+ super
4533
+ end
4534
+
4535
+ # Visit a XStringNode node.
4536
+ def visit_x_string_node(node)
4537
+ table = Table.new("XStringNode")
4538
+ id = node_id(node)
4539
+
4540
+ # flags
4541
+ table.field("flags", encoding_flags_inspect(node))
4542
+
4543
+ # opening_loc
4544
+ table.field("opening_loc", location_inspect(node.opening_loc))
4545
+
4546
+ # content_loc
4547
+ table.field("content_loc", location_inspect(node.content_loc))
4548
+
4549
+ # closing_loc
4550
+ table.field("closing_loc", location_inspect(node.closing_loc))
4551
+
4552
+ # unescaped
4553
+ table.field("unescaped", node.unescaped.inspect)
4554
+
4555
+ digraph.nodes << <<~DOT
4556
+ #{id} [
4557
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4558
+ ];
4559
+ DOT
4560
+
4561
+ super
4562
+ end
4563
+
4564
+ # Visit a YieldNode node.
4565
+ def visit_yield_node(node)
4566
+ table = Table.new("YieldNode")
4567
+ id = node_id(node)
4568
+
4569
+ # keyword_loc
4570
+ table.field("keyword_loc", location_inspect(node.keyword_loc))
4571
+
4572
+ # lparen_loc
4573
+ unless (lparen_loc = node.lparen_loc).nil?
4574
+ table.field("lparen_loc", location_inspect(lparen_loc))
4575
+ end
4576
+
4577
+ # arguments
4578
+ unless (arguments = node.arguments).nil?
4579
+ table.field("arguments", port: true)
4580
+ digraph.edge("#{id}:arguments -> #{node_id(arguments)};")
4581
+ end
4582
+
4583
+ # rparen_loc
4584
+ unless (rparen_loc = node.rparen_loc).nil?
4585
+ table.field("rparen_loc", location_inspect(rparen_loc))
4586
+ end
4587
+
4588
+ digraph.nodes << <<~DOT
4589
+ #{id} [
4590
+ label=<#{table.to_dot.gsub(/\n/, "\n ")}>
4591
+ ];
4592
+ DOT
4593
+
4594
+ super
4595
+ end
4596
+
4597
+ private
4598
+
4599
+ # Generate a unique node ID for a node throughout the digraph.
4600
+ def node_id(node)
4601
+ "Node_#{node.object_id}"
4602
+ end
4603
+
4604
+ # Inspect a location to display the start and end line and column numbers.
4605
+ def location_inspect(location)
4606
+ "(#{location.start_line},#{location.start_column})-(#{location.end_line},#{location.end_column})"
4607
+ end
4608
+
4609
+ # Inspect a node that has arguments_node_flags flags to display the flags as a
4610
+ # comma-separated list.
4611
+ def arguments_node_flags_inspect(node)
4612
+ flags = [] #: Array[String]
4613
+ flags << "contains_forwarding" if node.contains_forwarding?
4614
+ flags << "contains_keywords" if node.contains_keywords?
4615
+ flags << "contains_keyword_splat" if node.contains_keyword_splat?
4616
+ flags << "contains_splat" if node.contains_splat?
4617
+ flags << "contains_multiple_splats" if node.contains_multiple_splats?
4618
+ flags.join(", ")
4619
+ end
4620
+
4621
+ # Inspect a node that has array_node_flags flags to display the flags as a
4622
+ # comma-separated list.
4623
+ def array_node_flags_inspect(node)
4624
+ flags = [] #: Array[String]
4625
+ flags << "contains_splat" if node.contains_splat?
4626
+ flags.join(", ")
4627
+ end
4628
+
4629
+ # Inspect a node that has call_node_flags flags to display the flags as a
4630
+ # comma-separated list.
4631
+ def call_node_flags_inspect(node)
4632
+ flags = [] #: Array[String]
4633
+ flags << "safe_navigation" if node.safe_navigation?
4634
+ flags << "variable_call" if node.variable_call?
4635
+ flags << "attribute_write" if node.attribute_write?
4636
+ flags << "ignore_visibility" if node.ignore_visibility?
4637
+ flags.join(", ")
4638
+ end
4639
+
4640
+ # Inspect a node that has encoding_flags flags to display the flags as a
4641
+ # comma-separated list.
4642
+ def encoding_flags_inspect(node)
4643
+ flags = [] #: Array[String]
4644
+ flags << "forced_utf8_encoding" if node.forced_utf8_encoding?
4645
+ flags << "forced_binary_encoding" if node.forced_binary_encoding?
4646
+ flags.join(", ")
4647
+ end
4648
+
4649
+ # Inspect a node that has integer_base_flags flags to display the flags as a
4650
+ # comma-separated list.
4651
+ def integer_base_flags_inspect(node)
4652
+ flags = [] #: Array[String]
4653
+ flags << "binary" if node.binary?
4654
+ flags << "decimal" if node.decimal?
4655
+ flags << "octal" if node.octal?
4656
+ flags << "hexadecimal" if node.hexadecimal?
4657
+ flags.join(", ")
4658
+ end
4659
+
4660
+ # Inspect a node that has interpolated_string_node_flags flags to display the flags as a
4661
+ # comma-separated list.
4662
+ def interpolated_string_node_flags_inspect(node)
4663
+ flags = [] #: Array[String]
4664
+ flags << "frozen" if node.frozen?
4665
+ flags << "mutable" if node.mutable?
4666
+ flags.join(", ")
4667
+ end
4668
+
4669
+ # Inspect a node that has keyword_hash_node_flags flags to display the flags as a
4670
+ # comma-separated list.
4671
+ def keyword_hash_node_flags_inspect(node)
4672
+ flags = [] #: Array[String]
4673
+ flags << "symbol_keys" if node.symbol_keys?
4674
+ flags.join(", ")
4675
+ end
4676
+
4677
+ # Inspect a node that has loop_flags flags to display the flags as a
4678
+ # comma-separated list.
4679
+ def loop_flags_inspect(node)
4680
+ flags = [] #: Array[String]
4681
+ flags << "begin_modifier" if node.begin_modifier?
4682
+ flags.join(", ")
4683
+ end
4684
+
4685
+ # Inspect a node that has parameter_flags flags to display the flags as a
4686
+ # comma-separated list.
4687
+ def parameter_flags_inspect(node)
4688
+ flags = [] #: Array[String]
4689
+ flags << "repeated_parameter" if node.repeated_parameter?
4690
+ flags.join(", ")
4691
+ end
4692
+
4693
+ # Inspect a node that has parentheses_node_flags flags to display the flags as a
4694
+ # comma-separated list.
4695
+ def parentheses_node_flags_inspect(node)
4696
+ flags = [] #: Array[String]
4697
+ flags << "multiple_statements" if node.multiple_statements?
4698
+ flags.join(", ")
4699
+ end
4700
+
4701
+ # Inspect a node that has range_flags flags to display the flags as a
4702
+ # comma-separated list.
4703
+ def range_flags_inspect(node)
4704
+ flags = [] #: Array[String]
4705
+ flags << "exclude_end" if node.exclude_end?
4706
+ flags.join(", ")
4707
+ end
4708
+
4709
+ # Inspect a node that has regular_expression_flags flags to display the flags as a
4710
+ # comma-separated list.
4711
+ def regular_expression_flags_inspect(node)
4712
+ flags = [] #: Array[String]
4713
+ flags << "ignore_case" if node.ignore_case?
4714
+ flags << "extended" if node.extended?
4715
+ flags << "multi_line" if node.multi_line?
4716
+ flags << "once" if node.once?
4717
+ flags << "euc_jp" if node.euc_jp?
4718
+ flags << "ascii_8bit" if node.ascii_8bit?
4719
+ flags << "windows_31j" if node.windows_31j?
4720
+ flags << "utf_8" if node.utf_8?
4721
+ flags << "forced_utf8_encoding" if node.forced_utf8_encoding?
4722
+ flags << "forced_binary_encoding" if node.forced_binary_encoding?
4723
+ flags << "forced_us_ascii_encoding" if node.forced_us_ascii_encoding?
4724
+ flags.join(", ")
4725
+ end
4726
+
4727
+ # Inspect a node that has shareable_constant_node_flags flags to display the flags as a
4728
+ # comma-separated list.
4729
+ def shareable_constant_node_flags_inspect(node)
4730
+ flags = [] #: Array[String]
4731
+ flags << "literal" if node.literal?
4732
+ flags << "experimental_everything" if node.experimental_everything?
4733
+ flags << "experimental_copy" if node.experimental_copy?
4734
+ flags.join(", ")
4735
+ end
4736
+
4737
+ # Inspect a node that has string_flags flags to display the flags as a
4738
+ # comma-separated list.
4739
+ def string_flags_inspect(node)
4740
+ flags = [] #: Array[String]
4741
+ flags << "forced_utf8_encoding" if node.forced_utf8_encoding?
4742
+ flags << "forced_binary_encoding" if node.forced_binary_encoding?
4743
+ flags << "frozen" if node.frozen?
4744
+ flags << "mutable" if node.mutable?
4745
+ flags.join(", ")
4746
+ end
4747
+
4748
+ # Inspect a node that has symbol_flags flags to display the flags as a
4749
+ # comma-separated list.
4750
+ def symbol_flags_inspect(node)
4751
+ flags = [] #: Array[String]
4752
+ flags << "forced_utf8_encoding" if node.forced_utf8_encoding?
4753
+ flags << "forced_binary_encoding" if node.forced_binary_encoding?
4754
+ flags << "forced_us_ascii_encoding" if node.forced_us_ascii_encoding?
4755
+ flags.join(", ")
4756
+ end
4757
+ end
4758
+ end