redhat-et / redhat-et/ripwire

First-class Visual Basic (VB.NET) — get a grammar past the parse-rate bar, then index it

Open
#165 0 comments 0 reactions 0 assignees View on GitHub
help wanted
Dominant language
C++
Stars
2.1k
Forks
125
Avg merge
5h 42m
Merged PRs (30d)
136

Description

## What is missing

Visual Basic .NET still carries a large share of enterprise and legacy .NET code. It is one of only
two languages on the SCIP indexer list that ripwire does not index yet; the other is Scala, which
has its own kit. The stated plan on #70 is to support every language on that list first-class. The
catch here is the grammar, not the integration.

## The evidence

The only VB.NET tree-sitter grammar, `CodeAnt-AI/tree-sitter-vb-dotnet`, was checked and found to
have:

- **no license file** (upstream issue #7 is open about it);
- **no upstream commits since 2025-07-28**;
- **no test corpus**;
- **no rules for constructs nearly every real VB file uses** — `Inherits` on its own line,
`List(Of T)`, `Handles`, and XML literals — read directly from its `grammar.js`.

After the grammar come two things ripwire has not done before: case-insensitive name resolution (a
first), and a VB-only call graph that cannot disturb C# edges in mixed solutions. The kit carries
design notes for both, plus type characters, root namespace, `Module`, `Partial`,
`Handles`/`WithEvents`, line continuations, late binding and XML literals.

## Size

**Large**, and it depends on which route the grammar takes:

- **Route A** — upstream adds a license and accepts fixes: medium for the grammar, since an upstream
PR and a fork already hold many of the fixes, plus a normal language integration about the size of
the Dart landing.
- **Route B** — no upstream response: large. A new grammar with a test corpus is the bulk of it.

**Either way the first milestone is small and useful on its own:** STEP 0 parse-rate numbers for
today's grammar on three public corpora, measured with two instruments that must agree, plus the
work list of failing constructs. Grammar work and ripwire integration can be done by different
people; the STEP 0 numbers are the handoff between them.

## Prerequisites

Nothing has to merge first. Before designing any VB↔C# bridge, read #126 (Kotlin) and #136
(declined-call disclosure); the kit explains why.

## Where to start

`prompts/help-wanted/visual-basic-language.md` is a self-contained prompt for a coding agent. It
covers why VB matters, the verified state of the grammar with links, the STEP 0 measurement, the
integration path file by file (taken from the Dart and C# landings), the VB design notes, the
cross-language question with the Kotlin lesson, the acceptance criteria, the traps, and what the PR
description must contain. Like every prompt in `prompts/`, **it ends by writing a plan and
stopping** — a maintainer agrees the plan before any code is written.

Comment here to claim it, naming the route.

Contributor guide

Open the contributing guide

Research direction

Read prompts/help-wanted/visual-basic-language.md first, then review #126 and #136 before choosing a route. Start with STEP 0: measure the current grammar's parse rate on three public corpora using the two specified instruments. Done means the measurements agree, the failing constructs are documented as a work list, and a route-specific plan is written for maintainer approval.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, visualbasic
Domain
compilers, devtools
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.