Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
43f37d74
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
43f37d74
编写于
4月 18, 2016
作者:
S
Shyam N
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #9894 from huguesv/emptylinenooption
Allow interactive window evaluation of empty line.
上级
9f351129
00922d2d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
48 addition
and
24 deletion
+48
-24
src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs
...nteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs
+18
-24
src/InteractiveWindow/EditorTest/InteractiveWindowHistoryTests.cs
...ractiveWindow/EditorTest/InteractiveWindowHistoryTests.cs
+23
-0
src/InteractiveWindow/EditorTest/InteractiveWindowTests.cs
src/InteractiveWindow/EditorTest/InteractiveWindowTests.cs
+7
-0
未找到文件。
src/InteractiveWindow/Editor/InteractiveWindow.UIThreadOnly.cs
浏览文件 @
43f37d74
...
@@ -845,36 +845,30 @@ private async Task SubmitAsync()
...
@@ -845,36 +845,30 @@ private async Task SubmitAsync()
var
snapshotSpan
=
CurrentLanguageBuffer
.
CurrentSnapshot
.
GetExtent
();
var
snapshotSpan
=
CurrentLanguageBuffer
.
CurrentSnapshot
.
GetExtent
();
var
trimmedSpan
=
snapshotSpan
.
TrimEnd
();
var
trimmedSpan
=
snapshotSpan
.
TrimEnd
();
if
(
trimmedSpan
.
Length
>
0
)
if
(
trimmedSpan
.
Length
==
0
)
{
// TODO: reuse the current language buffer
PrepareForInput
();
return
;
}
else
{
{
_history
.
Add
(
historySpan
);
_history
.
Add
(
historySpan
);
State
=
State
.
ExecutingInput
;
}
StartCursorTimer
()
;
State
=
State
.
ExecutingInput
;
var
executionResult
=
await
Evaluator
.
ExecuteCodeAsync
(
snapshotSpan
.
GetText
()).
ConfigureAwait
(
true
);
StartCursorTimer
();
Debug
.
Assert
(
_window
.
OnUIThread
());
// ConfigureAwait should bring us back to the UI thread.
// For reset command typed at prompt -> the state should be WaitingForInput.
var
executionResult
=
await
Evaluator
.
ExecuteCodeAsync
(
snapshotSpan
.
GetText
()).
ConfigureAwait
(
true
);
// For all other submissions on the prompt -> it should be Executing input.
Debug
.
Assert
(
_window
.
OnUIThread
());
// ConfigureAwait should bring us back to the UI thread.
// If reset button is clicked during a long running submission -> it could be Resetting because
// oldService is disposed first as part of resetting, which leads to await call above returning, and new service is
// created after that as part of completing the resetting process.
Debug
.
Assert
(
State
==
State
.
ExecutingInput
||
State
==
State
.
WaitingForInput
||
State
==
State
.
Resetting
,
$"Unexpected state
{
State
}
"
);
if
(
State
==
State
.
ExecutingInput
)
// For reset command typed at prompt -> the state should be WaitingForInput.
{
// For all other submissions on the prompt -> it should be Executing input.
FinishExecute
(
executionResult
.
IsSuccessful
);
// If reset button is clicked during a long running submission -> it could be Resetting because
}
// oldService is disposed first as part of resetting, which leads to await call above returning, and new service is
// created after that as part of completing the resetting process.
Debug
.
Assert
(
State
==
State
.
ExecutingInput
||
State
==
State
.
WaitingForInput
||
State
==
State
.
Resetting
,
$"Unexpected state
{
State
}
"
);
if
(
State
==
State
.
ExecutingInput
)
{
FinishExecute
(
executionResult
.
IsSuccessful
);
}
}
}
}
catch
(
Exception
e
)
when
(
_window
.
ReportAndPropagateException
(
e
))
catch
(
Exception
e
)
when
(
_window
.
ReportAndPropagateException
(
e
))
...
...
src/InteractiveWindow/EditorTest/InteractiveWindowHistoryTests.cs
浏览文件 @
43f37d74
...
@@ -76,6 +76,29 @@ public async Task CheckHistoryPrevious()
...
@@ -76,6 +76,29 @@ public async Task CheckHistoryPrevious()
AssertCurrentSubmission
(
inputString
);
AssertCurrentSubmission
(
inputString
);
}
}
[
WpfFact
]
public
async
Task
CheckHistoryPreviousWithAnEmptySubmission
()
{
//submit, submit, submit, up, up, up
const
string
inputString1
=
"1 "
;
const
string
inputString2
=
" "
;
const
string
inputString3
=
"3 "
;
await
InsertAndExecuteInput
(
inputString1
).
ConfigureAwait
(
true
);
await
InsertAndExecuteInput
(
inputString2
).
ConfigureAwait
(
true
);
await
InsertAndExecuteInput
(
inputString3
).
ConfigureAwait
(
true
);
_operations
.
HistoryPrevious
();
AssertCurrentSubmission
(
inputString3
);
//second input was empty, so it wasn't added to history
_operations
.
HistoryPrevious
();
AssertCurrentSubmission
(
inputString1
);
//has reached the top, no change
_operations
.
HistoryPrevious
();
AssertCurrentSubmission
(
inputString1
);
}
[
WpfFact
]
[
WpfFact
]
public
async
Task
CheckHistoryPreviousNotCircular
()
public
async
Task
CheckHistoryPreviousNotCircular
()
{
{
...
...
src/InteractiveWindow/EditorTest/InteractiveWindowTests.cs
浏览文件 @
43f37d74
...
@@ -1089,6 +1089,13 @@ public async Task SubmitAsyncMultiple()
...
@@ -1089,6 +1089,13 @@ public async Task SubmitAsyncMultiple()
await
SubmitAsync
(
"1"
,
"2"
,
"1 + 2"
).
ConfigureAwait
(
true
);
await
SubmitAsync
(
"1"
,
"2"
,
"1 + 2"
).
ConfigureAwait
(
true
);
}
}
[
WorkItem
(
8569
,
"https://github.com/dotnet/roslyn/issues/8569"
)]
[
WpfFact
]
public
async
Task
SubmitAsyncEmptyLine
()
{
await
SubmitAsync
(
"1"
,
""
,
"1 + 2"
).
ConfigureAwait
(
true
);
}
private
async
Task
SubmitAsync
(
params
string
[]
submissions
)
private
async
Task
SubmitAsync
(
params
string
[]
submissions
)
{
{
var
actualSubmissions
=
new
List
<
string
>();
var
actualSubmissions
=
new
List
<
string
>();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录