Module: MilkTea
- Defined in:
- lib/milk_tea/lsp.rb,
lib/milk_tea/base.rb,
lib/milk_tea/core/ir.rb,
lib/milk_tea/core/ast.rb,
lib/milk_tea/core/cst.rb,
lib/milk_tea/core/lexer.rb,
lib/milk_tea/core/token.rb,
lib/milk_tea/dap/server.rb,
lib/milk_tea/lsp/server.rb,
lib/milk_tea/core/parser.rb,
lib/milk_tea/dap/session.rb,
lib/milk_tea/tooling/cli.rb,
lib/milk_tea/tooling/run.rb,
lib/milk_tea/bindings/cli.rb,
lib/milk_tea/dap/protocol.rb,
lib/milk_tea/lsp/protocol.rb,
lib/milk_tea/core/keywords.rb,
lib/milk_tea/core/lowering.rb,
lib/milk_tea/lsp/workspace.rb,
lib/milk_tea/packages/lock.rb,
lib/milk_tea/tooling/build.rb,
lib/milk_tea/core/c_backend.rb,
lib/milk_tea/packages/graph.rb,
lib/milk_tea/tooling/linter.rb,
lib/milk_tea/dap/server/wire.rb,
lib/milk_tea/lsp/diagnostics.rb,
lib/milk_tea/bindings/bindgen.rb,
lib/milk_tea/core/cst_builder.rb,
lib/milk_tea/core/types/types.rb,
lib/milk_tea/lsp/server/hover.rb,
lib/milk_tea/packages/version.rb,
lib/milk_tea/tooling/docs_app.rb,
lib/milk_tea/core/compile_time.rb,
lib/milk_tea/core/control_flow.rb,
lib/milk_tea/core/lexer/trivia.rb,
lib/milk_tea/core/lowering/dyn.rb,
lib/milk_tea/core/module_roots.rb,
lib/milk_tea/core/parser/types.rb,
lib/milk_tea/core/token_stream.rb,
lib/milk_tea/core/types/layout.rb,
lib/milk_tea/dap/server/launch.rb,
lib/milk_tea/lsp/server/rename.rb,
lib/milk_tea/packages/manifest.rb,
lib/milk_tea/packages/services.rb,
lib/milk_tea/tooling/debug_map.rb,
lib/milk_tea/tooling/formatter.rb,
lib/milk_tea/core/binding_types.rb,
lib/milk_tea/core/lexer/numbers.rb,
lib/milk_tea/core/lexer/strings.rb,
lib/milk_tea/core/lexer/symbols.rb,
lib/milk_tea/core/lowering/proc.rb,
lib/milk_tea/core/module_binder.rb,
lib/milk_tea/core/module_loader.rb,
lib/milk_tea/core/parser/blocks.rb,
lib/milk_tea/core/types/visitor.rb,
lib/milk_tea/tooling/asset_pack.rb,
lib/milk_tea/bindings/steamworks.rb,
lib/milk_tea/core/lexer/heredocs.rb,
lib/milk_tea/core/lexer/recovery.rb,
lib/milk_tea/core/lowering/async.rb,
lib/milk_tea/core/lowering/block.rb,
lib/milk_tea/core/lowering/calls.rb,
lib/milk_tea/core/lowering/loops.rb,
lib/milk_tea/core/lowering/scans.rb,
lib/milk_tea/core/lowering/utils.rb,
lib/milk_tea/core/pretty_printer.rb,
lib/milk_tea/core/types/registry.rb,
lib/milk_tea/dap/server/handlers.rb,
lib/milk_tea/lsp/server/progress.rb,
lib/milk_tea/lsp/workspace/store.rb,
lib/milk_tea/tooling/build_cache.rb,
lib/milk_tea/core/lowering/events.rb,
lib/milk_tea/core/parser/recovery.rb,
lib/milk_tea/dap/server/debug_map.rb,
lib/milk_tea/dap/server/utilities.rb,
lib/milk_tea/lsp/server/code_lens.rb,
lib/milk_tea/lsp/server/lifecycle.rb,
lib/milk_tea/lsp/server/utilities.rb,
lib/milk_tea/lsp/workspace/caches.rb,
lib/milk_tea/packages/manager_cli.rb,
lib/milk_tea/tooling/linter/rules.rb,
lib/milk_tea/bindings/raw_bindings.rb,
lib/milk_tea/core/lowering/resolve.rb,
lib/milk_tea/core/types/predicates.rb,
lib/milk_tea/dap/backends/lldb_dap.rb,
lib/milk_tea/lsp/server/completion.rb,
lib/milk_tea/lsp/server/debug_info.rb,
lib/milk_tea/lsp/server/definition.rb,
lib/milk_tea/lsp/server/formatting.rb,
lib/milk_tea/lsp/server/references.rb,
lib/milk_tea/packages/atomic_write.rb,
lib/milk_tea/packages/source_cache.rb,
lib/milk_tea/tooling/cst_formatter.rb,
lib/milk_tea/tooling/toolchain_cli.rb,
lib/milk_tea/bindings/vendored_glfw.rb,
lib/milk_tea/bindings/vendored_sdl3.rb,
lib/milk_tea/bindings/vendored_tool.rb,
lib/milk_tea/core/lexer/indentation.rb,
lib/milk_tea/core/parser/attributes.rb,
lib/milk_tea/core/parser/statements.rb,
lib/milk_tea/core/prelude_installer.rb,
lib/milk_tea/core/semantic_analyzer.rb,
lib/milk_tea/dap/server/breakpoints.rb,
lib/milk_tea/lsp/server/inlay_hints.rb,
lib/milk_tea/lsp/workspace/analysis.rb,
lib/milk_tea/bindings/vendored_box2d.rb,
lib/milk_tea/bindings/vendored_cjson.rb,
lib/milk_tea/bindings/vendored_flecs.rb,
lib/milk_tea/bindings/vendored_libuv.rb,
lib/milk_tea/bindings/vendored_pcre2.rb,
lib/milk_tea/bindings/vendored_tools.rb,
lib/milk_tea/bindings/vendored_tracy.rb,
lib/milk_tea/core/control_flow/graph.rb,
lib/milk_tea/core/lowering/artifacts.rb,
lib/milk_tea/core/lowering/functions.rb,
lib/milk_tea/core/parser/expressions.rb,
lib/milk_tea/dap/server/lldb_backend.rb,
lib/milk_tea/lsp/server/code_actions.rb,
lib/milk_tea/lsp/workspace/utilities.rb,
lib/milk_tea/packages/registry_store.rb,
lib/milk_tea/packages/source_fetcher.rb,
lib/milk_tea/tooling/error_formatter.rb,
lib/milk_tea/tooling/linter/doc_tags.rb,
lib/milk_tea/tooling/linter/visitors.rb,
lib/milk_tea/bindings/bindgen/emitter.rb,
lib/milk_tea/bindings/opengl_registry.rb,
lib/milk_tea/bindings/vendored_raylib.rb,
lib/milk_tea/core/lowering/str_buffer.rb,
lib/milk_tea/core/parser/declarations.rb,
lib/milk_tea/lsp/server/configuration.rb,
lib/milk_tea/lsp/server/folding_range.rb,
lib/milk_tea/lsp/workspace/collection.rb,
lib/milk_tea/packages/manifest_editor.rb,
lib/milk_tea/packages/source_resolver.rb,
lib/milk_tea/tooling/project_scaffold.rb,
lib/milk_tea/bindings/upstream_sources.rb,
lib/milk_tea/core/c_backend/statements.rb,
lib/milk_tea/core/control_flow/builder.rb,
lib/milk_tea/core/lexer/format_strings.rb,
lib/milk_tea/core/lowering/expressions.rb,
lib/milk_tea/core/module_loader/errors.rb,
lib/milk_tea/core/module_path_resolver.rb,
lib/milk_tea/lsp/dependency_resolution.rb,
lib/milk_tea/lsp/server/call_hierarchy.rb,
lib/milk_tea/lsp/server/signature_help.rb,
lib/milk_tea/lsp/server/text_documents.rb,
lib/milk_tea/lsp/server/type_hierarchy.rb,
lib/milk_tea/tooling/linter/fix_engine.rb,
lib/milk_tea/tooling/linter/flow_rules.rb,
lib/milk_tea/bindings/bindgen/overrides.rb,
lib/milk_tea/bindings/imported_bindings.rb,
lib/milk_tea/core/c_backend/expressions.rb,
lib/milk_tea/core/c_backend/reinterpret.rb,
lib/milk_tea/core/c_backend/type_system.rb,
lib/milk_tea/core/compatibility_helpers.rb,
lib/milk_tea/core/control_flow/dataflow.rb,
lib/milk_tea/core/control_flow/liveness.rb,
lib/milk_tea/core/lowering/declarations.rb,
lib/milk_tea/core/lowering/foreign_cstr.rb,
lib/milk_tea/lsp/server/execute_command.rb,
lib/milk_tea/lsp/server/selection_range.rb,
lib/milk_tea/lsp/server/semantic_tokens.rb,
lib/milk_tea/packages/dependency_solver.rb,
lib/milk_tea/bindings/bindgen/ast_parser.rb,
lib/milk_tea/bindings/vendored_c_library.rb,
lib/milk_tea/core/bindings/value_binding.rb,
lib/milk_tea/core/c_backend/reachability.rb,
lib/milk_tea/bindings/bindgen/declaration.rb,
lib/milk_tea/bindings/bindgen/type_mapper.rb,
lib/milk_tea/bindings/vendored_steamworks.rb,
lib/milk_tea/core/async_runtime_installer.rb,
lib/milk_tea/core/bindings/module_binding.rb,
lib/milk_tea/core/compile_time/const_eval.rb,
lib/milk_tea/core/lexer/character_classes.rb,
lib/milk_tea/core/lowering/async/analysis.rb,
lib/milk_tea/core/lowering/async/lowering.rb,
lib/milk_tea/core/semantic_analyzer/calls.rb,
lib/milk_tea/dap/server/pause_diagnostics.rb,
lib/milk_tea/tooling/debug_info_formatter.rb,
lib/milk_tea/tooling/linter/release_rules.rb,
lib/milk_tea/core/control_flow/termination.rb,
lib/milk_tea/lsp/server/on_type_formatting.rb,
lib/milk_tea/tooling/linter/reserved_names.rb,
lib/milk_tea/tooling/linter/source_helpers.rb,
lib/milk_tea/tooling/linter/trailing_comma.rb,
lib/milk_tea/bindings/raw_bindings/defaults.rb,
lib/milk_tea/core/bindings/function_binding.rb,
lib/milk_tea/core/c_backend/aggregate_utils.rb,
lib/milk_tea/core/c_backend/runtime_helpers.rb,
lib/milk_tea/core/c_backend/type_collectors.rb,
lib/milk_tea/core/control_flow/reachability.rb,
lib/milk_tea/core/lowering/lowering_context.rb,
lib/milk_tea/lsp/workspace/definition_index.rb,
lib/milk_tea/lsp/workspace/dependency_graph.rb,
lib/milk_tea/core/bindings/attribute_binding.rb,
lib/milk_tea/core/c_backend/type_declaration.rb,
lib/milk_tea/core/semantic_analyzer/generics.rb,
lib/milk_tea/lsp/server/linked_editing_range.rb,
lib/milk_tea/tooling/linter/imports_platform.rb,
lib/milk_tea/core/c_backend/feature_detection.rb,
lib/milk_tea/core/pretty_printer/ir_formatter.rb,
lib/milk_tea/core/semantic_analyzer/top_level.rb,
lib/milk_tea/bindings/imported_bindings/naming.rb,
lib/milk_tea/core/lowering/async/normalization.rb,
lib/milk_tea/core/pretty_printer/ast_formatter.rb,
lib/milk_tea/core/semantic_analyzer/attributes.rb,
lib/milk_tea/core/semantic_analyzer/statements.rb,
lib/milk_tea/lsp/server/diagnostics_scheduling.rb,
lib/milk_tea/core/control_flow/nullability_flow.rb,
lib/milk_tea/core/pretty_printer/base_formatter.rb,
lib/milk_tea/core/semantic_analyzer/expressions.rb,
lib/milk_tea/core/semantic_analyzer/nullability.rb,
lib/milk_tea/bindings/imported_bindings/defaults.rb,
lib/milk_tea/packages/registry_metadata_provider.rb,
lib/milk_tea/bindings/imported_bindings/generator.rb,
lib/milk_tea/core/c_backend/control_flow_emission.rb,
lib/milk_tea/core/control_flow/definite_assignment.rb,
lib/milk_tea/core/semantic_analyzer/module_context.rb,
lib/milk_tea/core/control_flow/constant_propagation.rb,
lib/milk_tea/core/semantic_analyzer/flow_refinement.rb,
lib/milk_tea/core/semantic_analyzer/name_resolution.rb,
lib/milk_tea/core/semantic_analyzer/analysis_context.rb,
lib/milk_tea/core/semantic_analyzer/function_binding.rb,
lib/milk_tea/core/semantic_analyzer/type_declaration.rb,
lib/milk_tea/bindings/imported_bindings/method_source.rb,
lib/milk_tea/core/semantic_analyzer/foreign_functions.rb,
lib/milk_tea/core/semantic_analyzer/type_compatibility.rb,
lib/milk_tea/core/semantic_analyzer/interface_conformance.rb
Defined Under Namespace
Modules: AST, Bindgen, CST, CompatibilityHelpers, CompileTime, ConstEval, ControlFlow, DAP, DebugInfoFormatter, ErrorFormatter, IR, ImportedBindings, LSP, Layout, LowererAsync, LowererBlock, LowererCalls, LowererDeclarations, LowererDyn, LowererEvents, LowererExpressions, LowererForeignCstr, LowererFunctions, LowererLoops, LowererProc, LowererResolve, LowererScans, LowererStrBuffer, LowererUtils, ModuleRoots, OpenGLRegistry, PackageAtomicWrite, Parse, PrettyPrinter, RawBindings, Steamworks, TypePredicates, Types, UpstreamSources, VendoredBox2D, VendoredCJSON, VendoredCLibrary, VendoredFlecs, VendoredGLFW, VendoredLibUV, VendoredPCRE2, VendoredRaylib, VendoredSDL3, VendoredSteamworks, VendoredTools, VendoredTracy
Classes: AssetPack, AssetPackError, AsyncRuntimeInstaller, AttributeBinding, BindgenCLI, BindgenError, Build, BuildCache, BuildError, CBackend, CBackendError, CLI, CSTBuilder, CSTFormatter, ContainsArrayStorageVisitor, ContainsCallableRefTypeVisitor, ContainsProcTypeVisitor, ContainsRefTypeVisitor, ContainsTypeVarVisitor, DebugMap, DefaultResolution, Diagnostic, DocsApp, EqualResolution, ExplicitDefaultBinding, ExplicitEqualBinding, ExplicitFormatBinding, ExplicitHashBinding, ExplicitOrderBinding, FlowScope, Formatter, FormatterError, FunctionBinding, HashResolution, LexError, Lexer, Linter, Lowerer, Lowering, LoweringError, ModuleBinder, ModuleBinding, ModuleLoadError, ModuleLoader, ModulePathResolver, OrderResolution, PackageDependencySolver, PackageDependencySolverError, PackageGraph, PackageGraphError, PackageLock, PackageLockError, PackageManagerCLI, PackageManifest, PackageManifestEditor, PackageManifestEditorError, PackageManifestError, PackageRegistryMetadataProvider, PackageRegistryMetadataProviderError, PackageRegistryStore, PackageRegistryStoreError, PackageServices, PackageSourceCache, PackageSourceCacheError, PackageSourceFetcher, PackageSourceFetcherError, PackageSourceResolver, PackageSourceResolverError, PackageVersion, PackageVersionError, PackageVersionReq, ParseError, Parser, PreludeInstaller, ProcStorageSupportedVisitor, ProjectScaffold, ProjectScaffoldError, Run, RunError, SemanticAnalyzer, SemanticError, SendableCheckVisitor, StoredRefSupportedVisitor, SubstituteTypeVisitor, SyntaxTokenStream, Token, ToolchainCLI, TriviaToken, TriviaTokenStream, TypeVisitor, ValidateSpecializedTypeVisitor, ValueBinding, VendoredTool
Constant Summary
collapse
- VERSION =
"0.3.4"
- KEYWORDS =
{
"align_of" => :align_of,
"and" => :and,
"as" => :as,
"async" => :async,
"attribute" => :attribute,
"attribute_arg" => :attribute_arg,
"attribute_of" => :attribute_of,
"attributes_of" => :attributes_of,
"await" => :await,
"break" => :break,
"const" => :const,
"compiler_flag" => :compiler_flag,
"gather" => :gather,
"continue" => :continue,
"function" => :function,
"has_attribute" => :has_attribute,
"defer" => :defer,
"detach" => :detach,
"dyn" => :dyn,
"editable" => :editable,
"enum" => :enum,
"else" => :else,
"emit" => :emit,
"event" => :event,
"external" => :external,
"false" => :false,
"callable_of" => :callable_of,
"fields_of" => :fields_of,
"field_of" => :field_of,
"flags" => :flags,
"fn" => :fn,
"for" => :for,
"foreign" => :foreign,
"if" => :if,
"implements" => :implements,
"include" => :include,
"in" => :in,
"inline" => :inline,
"inout" => :inout,
"import" => :import,
"interface" => :interface,
"is" => :is,
"let" => :let,
"link" => :link,
"match" => :match,
"members_of" => :members_of,
"extending" => :extending,
"module" => :module,
"not" => :not,
"null" => :null,
"offset_of" => :offset_of,
"opaque" => :opaque,
"consuming" => :consuming,
"or" => :or,
"out" => :out,
"parallel" => :parallel,
"pass" => :pass,
"proc" => :proc,
"public" => :public,
"return" => :return,
"size_of" => :size_of,
"static" => :static,
"static_assert" => :static_assert,
"struct" => :struct,
"type" => :type,
"unsafe" => :unsafe,
"true" => :true,
"union" => :union,
"var" => :var,
"variant" => :variant,
"when" => :when,
"while" => :while,
}.freeze
- BUILTIN_PRIMITIVE_NAMES =
%w[
bool byte ubyte char short ushort int uint long ulong ptr_int ptr_uint float double void str cstr
vec2 vec3 vec4 ivec2 ivec3 ivec4 mat3 mat4 quat
].freeze
- RESERVED_VALUE_TYPE_NAMES =
(BUILTIN_PRIMITIVE_NAMES + %w[
Option Result
]).freeze
- RESERVED_IMPORT_ALIAS_NAMES =
%w[
Option Result
].freeze
- BUILTIN_TYPE_NAMES =
(BUILTIN_PRIMITIVE_NAMES + %w[
ptr const_ptr own ref span array str_buffer atomic Task Option Result SoA simd
struct_handle field_handle callable_handle attribute_handle member_handle type
EventError Subscription
]).freeze
- BUILTIN_ATTRIBUTE_NAMES =
%w[packed align deprecated test expect_fatal].freeze
Class Method Summary
collapse
Class Method Details
.builtin_attribute_binding(name, types) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/milk_tea/core/bindings/attribute_binding.rb', line 9
def builtin_attribute_binding(name, types)
case name
when "packed"
AttributeBinding.new(
name: "packed",
targets: [:struct].freeze,
params: [].freeze,
module_name: nil,
builtin: true,
ast: nil,
)
when "align"
AttributeBinding.new(
name: "align",
targets: [:struct].freeze,
params: [Types::Registry.parameter("bytes", types.fetch("ptr_uint"))].freeze,
module_name: nil,
builtin: true,
ast: nil,
)
when "deprecated"
AttributeBinding.new(
name: "deprecated",
targets: %i[callable struct const enum flags union variant event].freeze,
params: [Types::Registry.parameter("message", types.fetch("str"))].freeze,
module_name: nil,
builtin: true,
ast: nil,
)
when "test"
AttributeBinding.new(
name: "test",
targets: [:callable].freeze,
params: [].freeze,
module_name: nil,
builtin: true,
ast: nil,
)
when "expect_fatal"
AttributeBinding.new(
name: "expect_fatal",
targets: [:callable].freeze,
params: [].freeze,
module_name: nil,
builtin: true,
ast: nil,
)
end
end
|
.data_root ⇒ Object
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/milk_tea/base.rb', line 12
def self.data_root
@data_root ||= begin
if !installed_as_gem? && File.writable?(root.to_s)
root
else
xdg_cache = ENV.fetch("XDG_CACHE_HOME", File.join(Dir.home, ".cache"))
Pathname.new(File.join(xdg_cache, "milk_tea"))
end
end
end
|
37
38
39
40
41
42
|
# File 'lib/milk_tea/base.rb', line 37
def self.host_platform
return :windows if /mswin|mingw|cygwin/ === RUBY_PLATFORM
return :darwin if /darwin/ === RUBY_PLATFORM
:linux
end
|
.root ⇒ Object
8
9
10
|
# File 'lib/milk_tea/base.rb', line 8
def self.root
@root ||= Pathname.new(File.expand_path("../..", __dir__))
end
|
.writable_root_for(root) ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/milk_tea/base.rb', line 28
def self.writable_root_for(root)
resolved = Pathname.new(File.expand_path(root.to_s))
if resolved.to_s == MilkTea.root.to_s
data_root
else
resolved
end
end
|