Releases: vaclav/mpscs
Releases · vaclav/mpscs
v1.10
Implement attributes Includes regular and global attributes. The relevant concepts have an initially empty and hidden list of attribute sections. These become visible upon adding the first section with an intention, after which more can be added with the keyboard as usual. Global attribute sections always specify one of two targets as required by the C# specification, while for regular attribute sections one can optionally be added with an intention and the available targets depend on the context. Some logic is also provided to validate attribute argument lists and constrain the properties available for named arguments, but typesystem support is needed for the numerous additional requirements. Finally, several abstract and interface concepts have been added to help manage the common behaviours.
v1.9
v1.8
Improve handling of generic parameters The AddGenericParameterListSection transformation menu is now only included if the referenced type is generic, which is inferred using a new method. A descriptive text has been added to the transformation menus for generic type lists and some changes were made to their editors to remove extra spaces from the textgen output.
v1.7
v1.6
v1.5
v1.4
Implement lambda expressions The implementation deviates from the specification by allowing explicit and implicit parameters to be mixed for ease of editing. This is still marked as an error and intentions are provided to convert between the types. Lambdas can be created and manipulated in various ways: - An async lambda can be created directly from the substitute menu or via a left transform on a regular lambda; - An expression body can always be converted to a block body; - A block body can be converted to an expression body if it contains only empty or return statements. In addition, FormalParameters now have a substitution menu that allows easy creation from any INonArrayType.
v1.3
v1.2: Implement using directives
New concepts have been added to represent both directives specified by the C# 5.0 grammar: using-alias-directive and using-namespace-directive. Using directives are now contained in the new abstract concept NamespaceContainer, which also provides their editor component. This obsoletes the UsingDirectiveList concept, whose usages have been marked as deprecated. An empty list of directives is hidden in order to keep the editor clean, so NamespaceContainer has two intentions for adding new directives. The using alias is practically usable as a referenceable type, but is incorrectly shown in its own completion menu and those of its siblings. The namespace directive uses the new NamespaceReference to constrain its completion menu, but is otherwise cosmetic: the rest of the language is not yet aware of the imported scopes. For example, references are still created with fully qualified names, though users could now choose to shorten these afterwards.