Language Intelligence

The VS Code Ballerina extension brings in language intelligence to enhance the development experience and increase its efficiency. Language intelligence is built in to the extension via a Language Server implementation, which consists of the below language intelligence options.

Semantic and Syntactic Diagnostics

When there are syntax or semantic errors in your code, you will be notified with appropriate diagnostics during the development time.

Tip: The detailed description that appears when you hover over the lines underlined in red will be consistent with the error message that you get during compile-time.

Semantic and syntactic diagnostics

Suggestions and Auto-Completion

The extension provides you with suggestions on keywords, variables, and code snippets of language constructs (such as functions, services, and iterable constructs etc.,).

Suggestions and auto completion

Tip: You can use these suggestions to access the contents of the modules available in your Ballerina home repo as well as in the Ballerina distribution.

Code Actions

These allow you to perform the below tasks easily based on the diagnostics and the current scope where the cursor resides.

  • Add documentation for an entity such as a function, service, resource, object, record etc.,
  • Add documentation for all the available entities in the current file
  • Add missing imports
  • Create variable definitions
  • Create an undefined function

For example, you can add documentation for a function as shown below.

Code actions

Hover Support

Hover support provides you quick access to information about a certain entity.

For example, if you hover over a function name, you can view its description, information about its parameters, and the description of its return type as shown below.

Hover support

Tip: Likewise, if you hover over an entity name of an object or a record, you can view the description of the object/record as well as descriptions of its fields.

Go to definition

This option allows you to view the definition of a selected variable, function, an object etc., within the same file, in a separate file, in the same module, or in a file of a different module, of the same project or of the Standard Library.

Go to definition

What’s Next?