<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>JSourceFileInfo (infer.JavaFrontend.JSourceFileInfo)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">JavaFrontend</a>» JSourceFileInfo</nav><h1>Module <code>JavaFrontend.JSourceFileInfo</code></h1></header><divclass="spec module"id="module-Array"><ahref="#module-Array"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Array/index.html">Array</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><dl><dtclass="spec value"id="val-incr_linenum"><ahref="#val-incr_linenum"class="anchor"></a><code><spanclass="keyword">val</span> incr_linenum : Stdlib.Lexing.lexbuf <span>-></span> unit</code></dt><dd><p>classic Ocamllex function to update current lexbuf line at each end of line</p></dd></dl><dl><dtclass="spec value"id="val-end_pos"><ahref="#val-end_pos"class="anchor"></a><code><spanclass="keyword">val</span> end_pos : Stdlib.Lexing.lexbuf <span>-></span> int * int</code></dt><dd><p>position of the char just after lexbuf</p></dd></dl><dl><dtclass="spec value"id="val-location_suffix"><ahref="#val-location_suffix"class="anchor"></a><code><spanclass="keyword">val</span> location_suffix : string <span>-></span> Stdlib.Lexing.lexbuf <span>-></span> int * int</code></dt><dd><p>return the exact position start of the suffix <code>classname</code> in <code>lexbuf</code></p></dd></dl><dl><dtclass="spec value"id="val-location_start"><ahref="#val-location_start"class="anchor"></a><code><spanclass="keyword">val</span> location_start : Stdlib.Lexing.lexbuf <span>-></span> int * int</code></dt><dd><p>return the position start of <code>lexbuf</code></p></dd></dl><dl><dtclass="spec type"id="type-expr"><ahref="#type-expr"class="anchor"></a><code><spanclass="keyword">type</span> expr</code><code> = </code><tableclass="variant"><trid="type-expr.AllocExpr"class="anchored"><tdclass="def constructor"><ahref="#type-expr.AllocExpr"class="anchor"></a><code>| </code><code><spanclass="constructor">AllocExpr</span></code></td></tr><trid="type-expr.OtherExpr"class="anchored"><tdclass="def constructor"><ahref="#type-expr.OtherExpr"class="anchor"></a><code>| </code><code><spanclass="constructor">OtherExpr</span></code></td></tr></table></dt><dd><p>We traverse the structure of the source file by recording the encompassing blocks in a stack of frame. We use the stack to recover the full inner class name at bytecode level</p></dd></dl><dl><dtclass="spec type"id="type-frame"><ahref="#type-frame"class="anchor"></a><code><spanclass="keyword">type</span> frame</code><code> = </code><code>{</code><tableclass="record"><trid="type-frame.short_class_name"class="anchored"><tdclass="def field"><ahref="#type-frame.short_class_name"class="anchor"></a><code>short_class_name : string;</code></td></tr><trid="type-frame.is_enum"class="anchored"><tdclass="def field"><ahref="#type-frame.is_enum"class="anchor"></a><code>is_enum : bool;</code></td></tr><trid="type-frame.next_anonymous_class"class="anchored"><tdclass="def field"><ahref="#type-frame.next_anonymous_class"class="anchor"></a><code>next_anonymous_class : int;</code></td></tr><trid="type-frame.opened_blocks"class="anchored"><tdclass="def field"><ahref="#type-frame.opened_blocks"class="anchor"></a><code>opened_blocks : int;</code></td></tr><trid="type-frame.exprs"class="anchored"><tdclass="def field"><ahref="#type-frame.exprs"class="anchor"></a><code>exprs : <span><ahref="index.html#type-expr">expr</a> list</span>;</code></td></tr></table><code>}</code></dt><dtclass="spec type"id="type-state"><ahref="#type-state