I’ve just made a new 5.3.1 release of Grantlee. The 5.3.0 release had some build issues with Qt 6 which should now be resolved with version 5.3.1. Unlike previous releases, this release will not appear on http://www.grantlee.org/downloads/. I’ll be turning off grantlee.org soon. All previous releases have already been uploaded to https://github.com/steveire/grantlee/releases. The continuation of […]| Steveire's Blog
I previously announced the end of new Qt5-based Grantlee releases. The Grantlee template system is to find new life as part of KDE Frameworks 6 in the form of KTextTemplate. The Grantlee textdocument library will probably become part of another KDE library with similar scope. Meanwhile, some changes have accumulated since the last Grantlee release, […]| Steveire's Blog
As of a few days ago, a new feature in clang-query allows introspecting the source locations for a given clang AST node. The feature is also available for experimentation in Compiler Explorer. I previously delivered a talk at EuroLLVM 2019 and blogged in 2018 about this feature and others to assist in discovery of AST […]| Steveire's Blog
The upcoming version of Clang 12 includes a new traversal mode which can be used for easier matching of AST nodes. I presented this mode at EuroLLVM and ACCU 2019, but at the time I was calling it “ignoring invisible” mode. The primary aim is to make AST Matchers easier to write by requiring less […]| Steveire's Blog
The Grantlee community is pleased to announce the release of Grantlee version 5.2.0. For the benefit of the uninitiated, Grantlee is a set of Qt based libraries including an advanced string template system in the style of the Django template system. {# This is a simple template #} {% for item in list %} {% […]| Steveire's Blog
I recently made a trip to LLVM in Brussels and ACCU in Bristol. It was a busy week. I gave a talk at both conferences on the topic of the future of AST Matchers-based refactoring. As usual, the ‘hallway track’ also proved useful at both conferences, leading to round-table discussions at the LLVM conference with […]| Steveire's Blog
Last week I flew to Brussels for EuroLLVM followed by Bristol for ACCU. At both conferences I presented the work I’ve been doing to make it easier for regular C++ programmers to perform ‘mechanical’ bespoke refactoring using the clang ASTMatchers tooling. Each talk was prepared specifically for the particular audience at that conference, but both […]| Steveire's Blog
I delivered a talk about writing a refactoring tool with Clang Tooling at code::dive in November. It was uploaded to YouTube today: The slides are available here and the code samples are here. This was a fun talk to deliver as I got to demo some features which had never been seen by anyone before. […]| Steveire's Blog
When creating clang-tidy checks, it is common to extract parts of AST Matcher expressions to local variables. I expanded on this in a previous blog. auto nonAwesomeFunction = functionDecl( unless(matchesName("^::awesome_")) ); Finder->addMatcher( nonAwesomeFunction.bind("addAwesomePrefix") , this); Finder->addMatcher( callExpr(callee(nonAwesomeFunction)).bind("addAwesomePrefix") , this); Use of such variables establishes an emergent extension API for re-use in the checks, or in […]| Steveire's Blog
Getting started – clang-tidy AST Matchers Over the last few weeks I published some blogs on the Visual C++ blog about Clang AST Matchers. The series can be found here: Extending clang-tidy Ex…| Steveire's Blog