Extensible Compiler for Static Type Checking External Data

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Programming languages that provide dynamic type access to external data sources lack integrated development environment (IDE) support, resulting in a poor developer experience due to the absence of features like auto-completion and static type checking, which are cumbersome to maintain and limit the usefulness of code generators.

Innovation Solution

Extending strong data typing to user-selected external data sources by fabricating temporary static types at compile time, allowing the compiler to perform static type checking and providing an extensible compiler and language service that integrates with IDEs to offer features like auto-completion and parameter help for external data sources.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If dynamic type access is provided to external data sources, then flexibility and adaptability are improved, but IDE support and static type checking are lost

Engineering Contradiction:
Improveflexibility of dynamic type accessVSAvoidIDE support and static type checking
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent introduces language services as an intermediary layer between the compiler and external data sources. These language services fabricate static type representations that the compiler can use for type checking, while the actual runtime access remains dynamic. This mediator enables both static analysis capabilities in the IDE and flexible dynamic access to external data.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system performs preliminary fabrication of static type representations before compilation. By creating these synthetic type definitions in advance, the compiler gains the type information needed for static checking and IDE support, while the actual data access maintains its dynamic nature at runtime.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If code generators are used to access external data sources, then productivity is improved, but maintenance burden increases

Engineering Contradiction:
Improvecode generation efficiencyVSAvoidmaintenance of code generators
Core Design Contradiction:
ProductivityVSEase of manufacture

Solution Approach 1:

The language services automatically fabricate static type representations from external data sources without requiring manual code generator maintenance. The system serves itself by dynamically generating the necessary type information, eliminating the need for separate code generation tools and their associated maintenance burdens.

Inventive Principle:
Principle #25Self-service

3Reliability

If static type checking is performed conservatively, then type safety is improved, but false positives increase

Engineering Contradiction:
Improvetype safetyVSAvoidfalse positives in type checking
Core Design Contradiction:
ReliabilityVSLoss of information

Solution Approach 1:

The patent changes the parameter of type representation from concrete static types to fabricated synthetic types. These synthetic types are specifically designed to match the actual runtime data structures from external sources, allowing the type checker to make more accurate judgments and reduce false positives while maintaining type safety.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8813027B2Static type checking against external data sources
Publication Date: 2014.08.19 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8813027B2 patent drawing
  • US8813027B2 patent drawing
  • US8813027B2 patent drawing

AI summary

Static type checking is performed against external data sources in an interacting editing environment. A rich editing experience can be provided to users for external data equivalent to that provided for internal static, typed data. An extensible compiler is provided so that a user or third party can extend type checking facilities to any external data source. An extensible language service is provided so that a user or third party can extend the language service to provide a consistent, current static view of external data. The extensible compiler and language service allow language extensions to plug into the type checking process. This enables the compiler and language service to provide an extension point that allows extensions of the compiler and allow the language service to render dynamic information statically.