No description
Find a file
Matt Bierner a77da1b1d8
For #81574 (#84669)
Our code currently uses the `IConstructorSignature` types in a two main ways:

- As argument types in functions that take a service constructor.
- As return types or property types when we expose a service constructor in the API

This first usage is not valid with strict function types. The reason is that the `IConstructorSignature` types takes a rest array of `...services: BrandedService[]` , while the concrete constructors you pass in use actual services. With strict function types, you cannot convert the concrete constructor type to an `IConstructorSignature` because this would drop important type information that the implementation needs. As an example

```ts
class Foo {
    constructor(@ILogService service: ILogService) {}
}

registerFoo(Foo);

// The type of `ctor` inlines `IConstructorSignature0`
function registerFoo(ctor: { new(....serivces: BrandedService[]): Foo}) {
   // When registerFoo(Foo) is called, the implementation here would need to know that
   // ctor needs to be invoked with exactly one `ILogService`. However the type of `IConstructorSignature0`
   // does not express this. Strict function types therefore disallows this conversion
}
```

To fix this, I have converted a few places were we were taking `IConstructorSignature` arguments so that they preserve the full type of the constructor. This fixed over half of our 900 strict function type errors. Unfortunatly I can not figure out a more elegant way to express this besides inlining the types

However, even after this change, we still need to figure out how to deal with:

- Places in the code where `IConstructorSignature` is exposed as a return type or object property
- How to deal with all of our descriptor types (such as `SyncActionDescriptor`)
2019-11-13 14:42:42 -08:00
.github Update commands.yml 2019-11-11 11:00:17 +01:00
.vscode update vs code default launch config 2019-11-01 09:04:12 +01:00
build update reference view extension 2019-11-13 15:51:19 +01:00
extensions Another nit in settings comment 2019-11-13 07:29:04 -08:00
remote update onigasm. Fixes #82606 2019-11-13 18:06:43 +01:00
resources update to electron 6.0.x (#81644) 2019-10-10 12:26:28 -07:00
scripts Improve integration test output on Windows (#84239) 2019-11-08 17:21:35 +01:00
src For #81574 (#84669) 2019-11-13 14:42:42 -08:00
test fixes #84455 2019-11-13 10:40:09 +01:00
.editorconfig
.eslintrc.json
.gitattributes
.gitignore web - add build 2019-07-14 13:12:54 +02:00
.mention-bot
.nvmrc
.prettierrc.json Add prettier config 2019-08-27 09:33:19 -07:00
.yarnrc chore: Bump electron@6.1.4 (#84089) 2019-11-06 23:09:13 -08:00
azure-pipelines.yml
cglicenses.json Remove cglicenses workaround for xterm addons 2019-09-13 11:22:35 -07:00
cgmanifest.json Update Codicons: Update tree + list icons 2019-11-07 15:04:06 -08:00
CONTRIBUTING.md
gulpfile.js remove gulpfile.ci 2019-07-02 15:38:23 +02:00
LICENSE.txt
package.json Update distro 2019-11-13 12:33:52 -08:00
product.json Fix commit 2019-09-19 12:57:04 +02:00
README.md Add a link to Where to Contribute 2019-10-09 15:43:19 -07:00
ThirdPartyNotices.txt Run OSS tool for 1.40 2019-10-29 09:00:02 +01:00
tsfmt.json
tslint.json Remove applicationinsights-web dependency 2019-10-07 14:34:21 -07:00
yarn.lock update onigasm. Fixes #82606 2019-11-13 18:06:43 +01:00

Visual Studio Code - Open Source ("Code - OSS")

Build Status Feature Requests Bugs Gitter

The Repository

This repository ("Code - OSS") is where we (Microsoft) develop the Visual Studio Code product. Not only do we work on code and issues here, we also publish our roadmap, monthly iteration plans, and our endgame plans. This source code is available to everyone under the standard MIT license.

Visual Studio Code

VS Code in action

Visual Studio Code is a distribution of the Code - OSS repository with Microsoft specific customizations released under a traditional Microsoft product license.

Visual Studio Code combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive code editing, navigation, and understanding support along with lightweight debugging, a rich extensibility model, and lightweight integration with existing tools.

Visual Studio Code is updated monthly with new features and bug fixes. You can download it for Windows, macOS, and Linux on Visual Studio Code's website. To get the latest releases every day, install the Insiders build.

Contributing

There are many ways in which you can participate in the project, for example:

If you are interested in fixing issues and contributing directly to the code base, please see the document How to Contribute, which covers the following:

Feedback

Many of the core components and extensions to Code live in their own repositories on GitHub. For example, the node debug adapter and the mono debug adapter have their own repositories. For a complete list, please visit the Related Projects page on our wiki.

Bundled Extensions

Code includes a set of built-in extensions located in the extensions folder, including grammars and snippets for many languages. Extensions that provide rich language support (code completion, Go to Definition) for a language have the suffix language-features. For example, the json extension provides coloring for JSON and the json-language-features provides rich language support for JSON.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

License

Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under the MIT license.