The following example demonstrates how to register a custom language type using a plugin with a LanguageType annotation.
interface CustomLanguageSourceSet extends LanguageSourceSet {} class DefaultCustomLanguageSourceSet extends BaseLanguageSourceSet implements CustomLanguageSourceSet {} apply plugin: MySamplePlugin class MySamplePlugin extends RuleSource { @LanguageType void declareCustomLanguage(LanguageTypeBuilderbuilder) { builder.setLanguageName("custom") builder.defaultImplementation(DefaultCustomLanguageSourceSet) } }