小编dot*_*141的帖子

如何通过LLVM C绑定发出调试信息?

我目前正在玩一个用Rust编写的简单LLVM前端.我现在正在尝试发出调试信息.

如何通过C绑定发出此调试信息(源位置和变量)?它甚至可能吗?我需要编写C++包装器吗?

似乎有一个插入源位置的函数(LLVMSetCurrentDebugLocation; LLVM ; Rust),但我不知道如何构造LLVMValue包含此信息的正确.我想它需要某种元数据.

c compiler-construction llvm debug-symbols rust

13
推荐指数
1
解决办法
446
查看次数

联合类型和条件类型的问题

我有以下类型声明:

class MyGeneric<T> { }

type ReplaceType<T> = T extends Function ? T : MyGeneric<T> | T;
Run Code Online (Sandbox Code Playgroud)

ReplaceType<T>应该解析为MyGeneric<T> | TorT取决于T它是否是一个函数:

// Input type:    string
// Expected type: string | MyGeneric<string>
// Actual type:   string | MyGeneric<string>
type Test1 = ReplaceType<string>;

// Input type:    () => void
// Expected type: () => void
// Actual type:   () => void
type Test2 = ReplaceType<() => void>;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不能正确地与boolean联合类型一起使用:

// Input type:    boolean
// Expected …
Run Code Online (Sandbox Code Playgroud)

generics typescript typescript-generics union-types conditional-types

4
推荐指数
1
解决办法
411
查看次数

包装修饰符有什么意义?

我不明白这样的包修饰符(不是注释):

public package foo;

public class Bar {
}
Run Code Online (Sandbox Code Playgroud)

他们有什么意义吗?

java modifier

1
推荐指数
1
解决办法
79
查看次数