IMPROVING
CODE COMPLETION
work by
Myroslava Romaniuk and Marcus Denker
What is Code Completion?
Problem
➥ on a Parser level
➥ on a Model level
➥ on a Sorter level
Problem: parser
Old completion used a dedicated parser
(Shout) that was originally shared with
syntax highlighter
Solution: use RB Parser
RBParser is used for syntax highlighting
We parse at every keystroke!
We can parse with Syntax Errors
Solution: parseSource
Solution: TypingVisitor
AST has not enough information
self, super, class of literals, Globals and
direct assignments to temps.
Solution: type check
Problem: model
Code is very hard to understand and change.
And the implementation behind the model
itself is unnecessarily complicated
Solution: model
➥ Type annotated AST
➥ CompletionProducer for suggesting
completion options based on node type
Solution: finding nodes
Solution: model results
➥ Using the AST simplifies the code a lot
➥ It is faster (no Benchmarks yet)
Problem: sorter
It was very difficult to implement a sorting
strategy as there was no separate
implementation of sorting
Solution: sorter
➥ you can choose the sorting strategy you
want in the settings (alphabetic by default)
➥ sorting strategies based on n-gram and
OCompletion will be added later
Refactoring results
# of classes 43 vs 22
# of methods 485 vs 243
# lines of code 3369 vs 1383
More improvements
➥ added completion for symbols
➥ fixed AST implementation
Fixing AST bugs
➥ incorrect stop in RBSequenceNode
➥ incorrect start in ParseErrorNode
➥ not recognising missing closing ‘|’ in
temp declaration as incorrect syntax
Future work
➥ ML based sorting strategy
➥ completing with syntax errors
➥ going beyond selector completion
Thanks!
@myroslavarm
@marcusdenker
romaniuk@ucu.edu.ua
marcus.denker@inria.fr

More Related Content

PPTX
An Introduction to Unit Testing
PDF
tpse-sprint3r-software-testing-you-know-maybe
ODP
Testing Philosphies
PDF
Test Driven Development
PPT
Code sense
PPTX
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
PDF
Revisit: Best Practices in Scala
PPTX
Code Smells and Refactoring - Satyajit Dey & Ashif Iqbal
An Introduction to Unit Testing
tpse-sprint3r-software-testing-you-know-maybe
Testing Philosphies
Test Driven Development
Code sense
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Revisit: Best Practices in Scala
Code Smells and Refactoring - Satyajit Dey & Ashif Iqbal

What's hot (12)

DOCX
QTP10 _ 9.5 _
ODP
Good coding-style, a talk made in 2008 to encourage changes in MySQL coding s...
PDF
TDD in the ABAP world - sitNL 2013 edition
PPT
Nguyenvandungb seminar
PPTX
Debbuging
DOCX
Bba105 computer fundamentals..
PDF
Testing 101: Three Rules for Testing at Ombu Labs
PPTX
Top 5 matlab courses
PPTX
Test Driven Development (TDD) Basics
PDF
Complete Programming
PPT
Project
PPT
9781111530532 ppt ch07_passing_primitivetypeasobjects
QTP10 _ 9.5 _
Good coding-style, a talk made in 2008 to encourage changes in MySQL coding s...
TDD in the ABAP world - sitNL 2013 edition
Nguyenvandungb seminar
Debbuging
Bba105 computer fundamentals..
Testing 101: Three Rules for Testing at Ombu Labs
Top 5 matlab courses
Test Driven Development (TDD) Basics
Complete Programming
Project
9781111530532 ppt ch07_passing_primitivetypeasobjects
Ad

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
PDF
Directing Generative AI for Pharo Documentation
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
PDF
Analysing Python Machine Learning Notebooks with Moose
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
PDF
An Analysis of Inline Method Refactoring
PDF
Identification of unnecessary object allocations using static escape analysis
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
PDF
Encoding for Objects Matters (IWST 2025)
PDF
Challenges of Transpiling Smalltalk to JavaScript
PDF
Immersive experiences: what Pharo users do!
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
Micromaid: A simple Mermaid-like chart generator for Pharo
Directing Generative AI for Pharo Documentation
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
Analysing Python Machine Learning Notebooks with Moose
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
Package-Aware Approach for Repository-Level Code Completion in Pharo
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
An Analysis of Inline Method Refactoring
Identification of unnecessary object allocations using static escape analysis
Control flow-sensitive optimizations In the Druid Meta-Compiler
Clean Blocks (IWST 2025, Gdansk, Poland)
Encoding for Objects Matters (IWST 2025)
Challenges of Transpiling Smalltalk to JavaScript
Immersive experiences: what Pharo users do!
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
Cavrois - an Organic Window Management (ESUG 2025)
Ad

Recently uploaded (20)

PPTX
Computer Software - Technology and Livelihood Education
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
PDF
Guide to Food Delivery App Development.pdf
PDF
Visual explanation of Dijkstra's Algorithm using Python
PPTX
"Secure File Sharing Solutions on AWS".pptx
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PPTX
Full-Stack Developer Courses That Actually Land You Jobs
PDF
MCP Security Tutorial - Beginner to Advanced
PDF
Topaz Photo AI Crack New Download (Latest 2025)
PDF
Website Design Services for Small Businesses.pdf
PPTX
Tech Workshop Escape Room Tech Workshop
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PDF
Salesforce Agentforce AI Implementation.pdf
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PPTX
Trending Python Topics for Data Visualization in 2025
PPTX
Download Adobe Photoshop Crack 2025 Free
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
Computer Software - Technology and Livelihood Education
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
Guide to Food Delivery App Development.pdf
Visual explanation of Dijkstra's Algorithm using Python
"Secure File Sharing Solutions on AWS".pptx
How Tridens DevSecOps Ensures Compliance, Security, and Agility
Weekly report ppt - harsh dattuprasad patel.pptx
Full-Stack Developer Courses That Actually Land You Jobs
MCP Security Tutorial - Beginner to Advanced
Topaz Photo AI Crack New Download (Latest 2025)
Website Design Services for Small Businesses.pdf
Tech Workshop Escape Room Tech Workshop
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
Salesforce Agentforce AI Implementation.pdf
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
Trending Python Topics for Data Visualization in 2025
Download Adobe Photoshop Crack 2025 Free
Wondershare Recoverit Full Crack New Version (Latest 2025)
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx

Improving Code Completion in Pharo