Mason: Type- and Name-Guided Program Synthesis
Jasper Geer, Fox Huston, Jeffrey S. Foster

TL;DR
Mason is a program synthesis tool that automatically inserts design patterns into object-oriented code by using type- and name-guided enumeration, improving efficiency with heuristics and pattern restrictions.
Contribution
The paper introduces Mason, a novel synthesis approach that leverages type and name information for efficient pattern insertion in object-oriented programs.
Findings
Mason effectively synthesizes design patterns in object-oriented code.
Extensions like non-local backtracking improve Mason's performance.
Mason performs well with few candidate programs satisfying constraints.
Abstract
Object-oriented programs tend to be written using many common coding idioms, such as those captured by design patterns. While design patterns are useful, implementing them is often tedious and repetitive, requiring boilerplate code that distracts the programmer from more essential details. In this paper, we introduce Mason, a tool that synthesizes object-oriented programs from partial program pieces, and we apply it to automatically insert design patterns into programs. At the core of Mason is a novel technique we call type- and name-guided synthesis, in which an enumerative solver traverses a partial program to generate typing constraints; discharges constraints via program transformations guided by the names of constrained types and members; and backtracks when a constraint is violated or a candidate program fails unit tests. We also introduce two extensions to Mason: a non-local…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Engineering Research · Software Testing and Debugging Techniques
