Fri 21 Jun 2024 14:30 - 15:00 - PLNL 2024

To assist programmers in developing and maintaining software, modern IDEs provide integrated support for refactoring code automatically. Implementing sound automated refactorings for modern programming languages is difficult, as refactorings may introduce name-binding errors or cause references to inadvertently resolve to wrong declarations. To prevent these problems, previous work by Schäfer et al. introduced locked references to separate binding preservation from transformation. Before transformation, all references are replaced by locked references, which vacuously resolve to a particular declaration. After transformation, these locked references must be replaced by concrete references that must resolve to the intended declaration. To synthesize these references, a faithful inverse of the name lookup functions of the underlying language must be defined.

Manually implementing such inverse lookup functions is challenging, however, as modern programming languages exhibit complex name-binding features to provide developers with fine-grained control over how to structure code. To solve this problem, we present an approach to derive these lookup functions automatically, based on type system specifications written in the Statix meta-DSL. Statix specifications consist of inference rules that describe well-typed programs. To cover name binding constraints, Statix uses queries over scope graphs, which are graphs representing the binding structure of a program. We use these queries to infer the names, and inference rules to discover the syntactical structure when synthesizing qualified references.

We evaluate our approach by applying our algorithm to a toy language that illustrates many name binding features, as well as 2159 Java refactoring tests used by IntelliJ. Together, this yields a principled approach to synthesizing references, which is sound by construction, automatic, and broadly applicable.

Fri 21 Jun

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

11:00 - 17:00
PLNL 2024PLNL 2024
11:00
30m
Talk
Salix: Elm-style Web programming in Rascal, an exercise in library design
PLNL 2024
Tijs van der Storm CWI & University of Groningen
11:30
30m
Talk
It‘s RASCALing – Using Game Engines to rapidly prototype Visual Programming Environments
PLNL 2024
Elisabeth Kletsko University of Amsterdam, Riemer van Rozen CWI
12:00
30m
Talk
Vie is a Game-Changer: Programming Languages meets Game-Based Learning
PLNL 2024
12:30
60m
Lunch
Lunch time
PLNL 2024

13:30
30m
Talk
Supporting Cooperative System Specification via Meta-Programming Language Features
PLNL 2024
Christopher Esterhuyse University of Amsterdam
14:00
30m
Talk
Formalizing Algebraic Effects using Domain Theory
PLNL 2024
Simcha van Collem Radboud University Nijmegen, Niels van der Weide Radboud University, Herman Geuvers Radboud University Nijmegen, Netherlands
File Attached
14:30
30m
Talk
Language-Parametric Reference Synthesis
PLNL 2024
Daniel A. A. Pelsmaeker Delft University of Technology, Netherlands, Aron Zwaan Delft University of Technology, Casper Bach Poulsen Delft University of Technology
15:00
30m
Talk
Multiverse Recursive Descent Grammar Exploration
PLNL 2024
L. Thomas van Binsbergen University of Amsterdam
File Attached
15:30
90m
Break
Drinks and discussion
PLNL 2024