Skip to content

Language record

Visual Basic

Visual Basic is indexed with the .NET member contract intact: an Implements clause on a type or on a single member, an Overrides modifier, an Imports list, and a call edge for every invocation — including New Foo(a, b), which the grammar spells as a construction and not a call.

.vb · 1 registry id · 11 of 14 relationship types

The registry row this page is generated from

Read at render time from the same family row the register reads, so nothing in this block can disagree with it.

Extensions
.vb
Registry names
vb
Recorded symbols
classes · modules · methods · events · enums

Relationship types this analyzer constructs

11 of 14 constructed, read from this analyzer's source and re-derived by the languages gate. Each row below is one of the engine's types, in the engine's own order.

Relationship typeConstructed
callsconstructed by this analyzer
extendsconstructed by this analyzer
implementsconstructed by this analyzer
usesconstructed by this analyzer
importsconstructed by this analyzer
exportsconstructed by this analyzer
containsconstructed by this analyzer
referencesconstructed by this analyzer
overridesconstructed by this analyzer
instantiatesconstructed by this analyzer
decoratesconstructed by this analyzer
rendersruled absent
mixes_inruled absent
part_ofruled absent

11 constructed, 3 not constructed. All 3 absent types are recorded as ruled absent: the written reason and the corpus measurement behind each are in this family's completeness record. The register explains what each label means.

What this analyzer does not resolve

  • The header-clause form is not split: in Class C : Inherits B, Implements I every name after the header colon is published as extends. implements reaches the graph through the line form and through the member-level clause instead.
  • Eight constructs that carry a real relationship are classified as known but uncollected and counted rather than derived: constructor chaining, AddHandler and RemoveHandler, lambdas, RaiseEvent, event members and property getters and setters. Handles members alone were measured at 2,602 across the corpus.
  • Multiple Partial Class parts are not merged into one type, so a Windows Forms dialog's designer half and its code half read as two declarations of the same name rather than one type with two halves.

Every line above was written against Visual Basic’s own analyzer module and is named against a construct in it, so it can be checked against the source. Nothing here is inherited from a template, or from another language’s page.

Where you meet it in a repository

Recognised by extension — .vb. Everything below is about where those files actually sit in a working repository.

  • A VB.NET codebase is mostly Windows Forms or WPF, and the designer emits one .Designer.vb half of every form beside the hand-written half.
  • Imports names a namespace rather than a module path, so the same short name can arrive from several places in one project.
  • COM interop appears as Declare statements naming an unmanaged entry point — the one place a VB file reaches outside managed code.

Questions this index answers

Phrased as retrievals, because that is what an index can honestly do: it holds the symbols and the edges between them, and hands them back with the evidence attached.

  1. Which types implement this interface?
  2. Which member implements IThing.Refresh, and what does it override?
  3. Which namespaces does this file import?
  4. Which members does this class declare, and which of them are events?

What the analyzer sees in code like this

Declarations in a .vb file — heritage, an override and a resolved call
Imports System.Text            ' bb records: an import of the System.Text namespace

Partial Public Class Dialog1             ' bb records: class Dialog1 · marked partial
    Private Const MaxRows As Integer = 20 ' bb records: constant MaxRows

    Public Overrides Sub Refresh() Implements IThing.Refresh
        Me._names.Add(u)                 ' bb records: a call edge to Add
    End Sub
End Class

Symbols are stored with the file they came from and the bytes they span, so a hit points at a line rather than at a guess. The annotations in the sample are commentary for the reader, not strings the index would store.

Languages that turn up in the same repository

Application & systems — the count beside each name is how many relationship types that family’s analyzer constructs.

The extensions, registry names, recorded symbols and relationship types above are the parser registry row for Visual Basic, read while the page rendered — the same row the register reads, so the two surfaces cannot tell two stories. Every relationship type listed as constructed appears in src/ast/real-*, the analyzer modules bb ships. bb 0.1.0 answers from a local store over 50 languages (53 registry ids, three of them aliases). There is no benchmark on this page: every claim here is one you can go and read in the source.