本文整理汇总了C#中CompilationUnit类的典型用法代码示例。如果您正苦于以下问题:C# CompilationUnit类的具体用法?C# CompilationUnit怎么用?C# CompilationUnit使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
CompilationUnit类属于命名空间,在下文中一共展示了CompilationUnit类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ToolTipData
public ToolTipData (ICSharpCode.NRefactory.CSharp.CompilationUnit unit, ICSharpCode.NRefactory.Semantics.ResolveResult result, ICSharpCode.NRefactory.CSharp.AstNode node, CSharpAstResolver file)
{
this.Unit = unit;
this.Result = result;
this.Node = node;
this.Resolver = file;
}
示例2: Translate
private string Translate(CompilationUnit typedCompilationUnit)
{
var code = new CodeWriter();
WriteAction write = typedCompilationUnit.Visit(csTranslator);
write(code);
return code.ToString();
}
示例3: TestGetNamespaceContentsCase2
public void TestGetNamespaceContentsCase2 ()
{
CompilationUnit unit = new CompilationUnit ("file.cs");
unit.Add (new DomType ("ANamespace.AnotherNamespace.AClass"));
unit.Add (new DomType ("ANamespace.AnotherNamespace.BClass"));
unit.Add (new DomType ("ANamespace.AnotherNamespace.CClass"));
unit.Add (new DomType ("ANamespace.AClass2"));
unit.Add (new DomType ("ANamespace.BClass2"));
unit.Add (new DomType ("CClass3"));
List<IMember> member = new List<IMember> ();
unit.GetNamespaceContents (member, "ANamespace", true);
Assert.AreEqual (3, member.Count);
Namespace ns = member[0] as Namespace;
Assert.IsNotNull (ns);
Assert.AreEqual ("AnotherNamespace", ns.Name);
IType type = member[1] as IType;
Assert.IsNotNull (type);
Assert.AreEqual ("AClass2", type.Name);
type = member[2] as IType;
Assert.IsNotNull (type);
Assert.AreEqual ("BClass2", type.Name);
}
示例4: ReplaceJumpToWhile
public void ReplaceJumpToWhile()
{
var cu = new CompilationUnit().AddStatements(new Statement[]
{
new ExpressionStatement(new MethodInvocation("Delay").AddArgument(60)){ StartOffset = 0, EndOffset = 4 },
new ExpressionStatement(new BinaryExpression(new ElementAccess("LocalVariables", 0), Operator.Assignment, new MethodInvocation("GetRandomNumber").AddArgument(10))){ StartOffset = 4, EndOffset = 8 },
new ExpressionStatement(new BinaryExpression(new ElementAccess("Variables", 103), Operator.Assignment, 0.ToLiteral())){ StartOffset = 8, EndOffset = 13 },
new JumpStatement(true.ToLiteral(), 0){ StartOffset = 13, EndOffset = 16 },
new ExpressionStatement(new MethodInvocation("StopObjectCode")){ StartOffset = 16, EndOffset = 17 },
});
var expectedCu = new CompilationUnit().AddStatements(new Statement[]
{
new DoWhileStatement(true.ToLiteral(), new BlockStatement().AddStatements(
new Statement[]
{
new ExpressionStatement(new MethodInvocation("Delay").AddArgument(60)){ StartOffset = 0, EndOffset = 4 },
new ExpressionStatement(new BinaryExpression(new ElementAccess("LocalVariables", 0), Operator.Assignment, new MethodInvocation("GetRandomNumber").AddArgument(10))){ StartOffset = 4, EndOffset = 8 },
new ExpressionStatement(new BinaryExpression(new ElementAccess("Variables", 103), Operator.Assignment, 0.ToLiteral())){ StartOffset = 8, EndOffset = 13 },
})),
new ExpressionStatement(new MethodInvocation("StopObjectCode")){ StartOffset = 16, EndOffset = 17 },
});
var actualCu = new ReplaceJumpToWhile().Replace(cu);
AstHelper.AstEquals(expectedCu, actualCu);
}
示例5: PsiVisitor
public PsiVisitor(CompilationUnit cu, CompilerDTO dto)
{
DTO = dto;
CurrentCompilationUnit = cu;
InitHelpers();
}
示例6: ReplaceJumpToIf
public void ReplaceJumpToIf()
{
var cu = new CompilationUnit().AddStatements(new Statement[]
{
new JumpStatement(
new BinaryExpression(
new SimpleName("Var1"), Operator.Greater, 0.ToLiteral()),
10){ StartOffset = 0, EndOffset = 5 },
new ExpressionStatement(
new MethodInvocation("Print").AddArgument("Var1 is lower or equals to 0".ToLiteral())) { StartOffset = 5, EndOffset = 10 },
new ExpressionStatement(
new MethodInvocation("Print").AddArgument("End".ToLiteral())) { StartOffset = 10, EndOffset = 15 }
});
var expectedCu = new CompilationUnit().AddStatements(new Statement[]
{
new IfStatement(
new BinaryExpression(
new SimpleName("Var1"), Operator.LowerOrEquals, 0.ToLiteral()),
new BlockStatement().AddStatement(
new ExpressionStatement(
new MethodInvocation("Print").AddArgument("Var1 is lower or equals to 0".ToLiteral())) { StartOffset = 5, EndOffset = 10 })
){ StartOffset = 0, EndOffset = 10 },
new ExpressionStatement(
new MethodInvocation("Print").AddArgument("End".ToLiteral())) { StartOffset = 10, EndOffset = 15 }
});
var actualCu = new ReplaceJumpToIf().Replace(cu);
AstHelper.AstEquals(expectedCu, actualCu);
}
示例7: GatherVisitor
public GatherVisitor (BaseRefactoringContext context, CompilationUnit unit,
AccessToClosureIssue issueProvider)
: base (context)
{
this.title = context.TranslateString (issueProvider.Title);
this.unit = unit;
this.issueProvider = issueProvider;
}
示例8: Validate
public void Validate(CompilationUnit cu)
{
foreach (AstNode node in cu.DescendantsAndSelf.Except(resolvedNodes)) {
if (!CSharpAstResolver.IsUnresolvableNode(node)) {
Console.WriteLine("Forgot to resolve " + node);
}
}
}
示例9: PsiSemanticAnaliserVisitor
public PsiSemanticAnaliserVisitor(CompilationUnit cu, CompilerDTO dto)
: base(cu, dto)
{
CurrentCompilationUnit = cu;
DTO = dto;
InitHelpers();
}
示例10: VisitCompilationUnit
public override object VisitCompilationUnit(CompilationUnit compilationUnit, object data)
{
base.VisitCompilationUnit(compilationUnit, data);
for (int i = 0; i < nodesToMoveToCompilationUnit.Count; i++) {
compilationUnit.Children.Insert(i, nodesToMoveToCompilationUnit[i]);
nodesToMoveToCompilationUnit[i].Parent = compilationUnit;
}
return null;
}
示例11: Replace
public CompilationUnit Replace(CompilationUnit cu)
{
var visitor = new JumpAstVisitor();
cu.Accept(visitor);
var jumps = visitor.Jumps.Where(AcceptJump).ToList();
var newCu = cu.Accept(new JumpReplacer());
newCu.Accept(new LabelInserter(jumps));
return (CompilationUnit)newCu;
}
示例12: DynamicallyCompiledLibraries
public DynamicallyCompiledLibraries(ErrorCollector collector)
{
this.collector = collector;
var name = "DynamicallyCompiledLibraries" + GetHashCode();
var assembly_builder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(name), AssemblyBuilderAccess.Run);
CompilationUnit.MakeDebuggable(assembly_builder);
var module_builder = assembly_builder.DefineDynamicModule(name, true);
unit = new CompilationUnit(module_builder, true);
}
示例13: CSharpParameterCompletionEngine
public CSharpParameterCompletionEngine (IDocument document, IParameterCompletionDataFactory factory, IProjectContent content, CSharpTypeResolveContext ctx, CompilationUnit unit, CSharpParsedFile parsedFile) : base (content, ctx, unit, parsedFile)
{
if (document == null)
throw new ArgumentNullException ("document");
if (factory == null)
throw new ArgumentNullException ("factory");
this.document = document;
this.factory = factory;
}
示例14: Resolve
public static ResolveResult Resolve(ICompilation compilation, CSharpParsedFile parsedFile, CompilationUnit cu, TextLocation location,
CancellationToken cancellationToken = default(CancellationToken))
{
AstNode node = cu.GetNodeAt(location);
if (node == null)
return null;
AstNode resolvableNode;
if (node is AstType) {
resolvableNode = node;
if (resolvableNode.Parent is ComposedType) {
while (resolvableNode.Parent is ComposedType)
resolvableNode = resolvableNode.Parent;
//node is preffered over the resolvable node. Which shouldn't be done in the case of nullables, arrays etc.
node = resolvableNode;
}
} else if (node is Identifier) {
resolvableNode = node.Parent;
} else if (node.NodeType == NodeType.Token) {
if (node.Parent is ConstructorInitializer) {
resolvableNode = node.Parent;
} else {
return null;
}
} else {
// don't resolve arbitrary nodes - we don't want to show tooltips for everything
return null;
}
if (resolvableNode != null && resolvableNode.Parent is ObjectCreateExpression) {
resolvableNode = resolvableNode.Parent;
}
InvocationExpression parentInvocation = null;
if ((resolvableNode is IdentifierExpression || resolvableNode is MemberReferenceExpression || resolvableNode is PointerReferenceExpression)) {
// we also need to resolve the invocation
parentInvocation = resolvableNode.Parent as InvocationExpression;
}
IResolveVisitorNavigator navigator;
if (parentInvocation != null)
navigator = new NodeListResolveVisitorNavigator(new[] { resolvableNode, parentInvocation });
else
navigator = new NodeListResolveVisitorNavigator(new[] { resolvableNode });
CSharpResolver resolver = new CSharpResolver(compilation);
ResolveVisitor v = new ResolveVisitor(resolver, parsedFile, navigator);
v.Scan(cu);
// Prefer the RR from the token itself, if it was assigned a ResolveResult
// (this can happen with the identifiers in various nodes such as catch clauses or foreach statements)
ResolveResult rr = v.GetResolveResult(node) ?? v.GetResolveResult(resolvableNode);
if (rr is MethodGroupResolveResult && parentInvocation != null)
return v.GetResolveResult(parentInvocation);
else
return rr;
}
示例15: Resolve
public static ResolveResult Resolve(Lazy<ICompilation> compilation, CSharpParsedFile parsedFile, CompilationUnit cu, TextLocation location, out AstNode node,
CancellationToken cancellationToken = default(CancellationToken))
{
node = cu.GetNodeAt(location);
if (node == null || node is ArrayInitializerExpression)
return null;
if (CSharpAstResolver.IsUnresolvableNode(node)) {
if (node is Identifier) {
node = node.Parent;
} else if (node.NodeType == NodeType.Token) {
if (node.Parent is IndexerExpression || node.Parent is ConstructorInitializer) {
Console.WriteLine (2);
// There's no other place where one could hover to see the indexer's tooltip,
// so we need to resolve it when hovering over the '[' or ']'.
// For constructor initializer, the same applies to the 'base'/'this' token.
node = node.Parent;
} else {
return null;
}
} else {
// don't resolve arbitrary nodes - we don't want to show tooltips for everything
return null;
}
} else {
// It's a resolvable node.
// However, we usually don't want to show the tooltip everywhere
// For example, hovering with the mouse over an empty line between two methods causes
// node==TypeDeclaration, but we don't want to show any tooltip.
if (!node.GetChildByRole(Roles.Identifier).IsNull) {
// We'll suppress the tooltip for resolvable nodes if there is an identifier that
// could be hovered over instead:
return null;
}
}
if (node == null)
return null;
if (node.Parent is ObjectCreateExpression && node.Role == Roles.Type) {
node = node.Parent;
}
InvocationExpression parentInvocation = null;
if ((node is IdentifierExpression || node is MemberReferenceExpression || node is PointerReferenceExpression) && node.Role != Roles.Argument) {
// we also need to resolve the invocation
parentInvocation = node.Parent as InvocationExpression;
}
// TODO: I think we should provide an overload so that an existing CSharpAstResolver can be reused
CSharpAstResolver resolver = new CSharpAstResolver(compilation.Value, cu, parsedFile);
ResolveResult rr = resolver.Resolve(node, cancellationToken);
if (rr is MethodGroupResolveResult && parentInvocation != null)
return resolver.Resolve(parentInvocation);
else
return rr;
}