text:
rename /lib/ files to CamelCase

We had a mix of inconsistent file name styles. This creates problems on
Linux as we had to modify source code includes to the same casing as real
file names. This change attempts rename (most) /lib/ files to CamelCase.
lib/Parser                          =>  Lib/Parser

     alloc.cpp                               Alloc.cpp
     scan.h                                  Scan.h
     hash.h                                  Hash.h
     jsscan.js                               JsScan.js
     parse.h                                 Parse.h
     hash.cpp                                Hash.cpp
     parse.cpp                               Parse.cpp
     regcodes.h                              RegCodes.h
     scan.cpp                                Scan.cpp
     RegexOpcodes.h                          RegexOpCodes.h
     RegexRunTime.h                          RegexRuntime.h
     alloc.h                                 Alloc.h
     hashfunc.cpp                            HashFunc.cpp
     RegexRunTime.cpp                        RegexRuntime.cpp

lib/common/common                   =>  Lib/Common/Common

     GetCurrentFrameID.h                     GetCurrentFrameId.h
     cfglogger.h                             CfgLogger.h
     int16math.h                             Int16Math.h
     SmartFPUControl.h                       SmartFpuControl.h
     SmartFPUControl.cpp                     SmartFpuControl.cpp
     cfglogger.cpp                           CfgLogger.cpp

lib/common                          =>  Lib/Common

     BackEndAPI.h                            BackendApi.h

lib/common/DataStructures           =>  Lib/Common/DataStructures

     dictionary.h                            Dictionary.h
     Dlist.h                                 DList.h
     comparer.h                              Comparer.h
     growingArray.h                          GrowingArray.h
     interval.h                              Interval.h
     stack.h                                 Stack.h
     growingArray.cpp                        GrowingArray.cpp
     list.h                                  List.h

lib/common/Exceptions               =>  Lib/Common/Exceptions

     reporterror.cpp                         ReportError.cpp
     reporterror.h                           ReportError.h

lib/common/Memory                   =>  Lib/Common/Memory

     heapinfo.cpp                            HeapInfo.cpp
     leakreport.h                            LeakReport.h
     heapbucket.h                            HeapBucket.h
     collectionstate.h                       CollectionState.h
     heapbucket.inl                          HeapBucket.inl
     heapblock.inl                           HeapBlock.inl
     heapbucket.cpp                          HeapBucket.cpp
     heapinfo.h                              HeapInfo.h
     leakreport.cpp                          LeakReport.cpp

lib/common/core                     =>  Lib/Common/Core

     AutoFILE.h                              AutoFile.h
     api.h                                   Api.h

lib/common                          =>  Lib/Common

     resource.h                              Resource.h
     commoninl.h                             CommonInl.h

lib/common/util                     =>  Lib/Common/Util

     pinned.cpp                              Pinned.cpp
     pinned.h                                Pinned.h

lib/jsrt                            =>  Lib/Jsrt

     jsrtcontext.h                           JsrtContext.h
     jsrtThreadService.h                     JsrtThreadService.h
     jsrtRuntime.h                           JsrtRuntime.h
     jsrtThreadService.cpp                   JsrtThreadService.cpp
     jsrtRuntime.cpp                         JsrtRuntime.cpp
     chakracommon.h                          ChakraCommon.h
     jsrtinternal.h                          JsrtInternal.h
     jsrtcontext.cpp                         JsrtContext.cpp
     jsrtExternalObject.cpp                  JsrtExternalObject.cpp
     jsrtExternalObject.h                    JsrtExternalObject.h

lib/Backend                         =>  Lib/Backend

     SCCLiveness.h                           SccLiveness.h
     BackEndOpCodeList.h                     BackendOpCodeList.h
     SCCLiveness.cpp                         SccLiveness.cpp

lib/Backend/i386                    =>  Lib/Backend/i386

     MdOpcodes.h                             MdOpCodes.h

lib/Backend                         =>  Lib/Backend

     BackEnd.h                               Backend.h

lib/Backend/arm                     =>  Lib/Backend/arm

     MdOpcodes.h                             MdOpCodes.h

lib/Backend                         =>  Lib/Backend

     BackEndOpcodeAttrAsmJs.h                BackendOpCodeAttrAsmJs.h
     BackEndOpcodeAttrAsmJs.cpp              BackendOpCodeAttrAsmJs.cpp
     CodegenNumberAllocator.cpp              CodeGenNumberAllocator.cpp

lib/Backend/amd64                   =>  Lib/Backend/amd64

     MdOpcodes.h                             MdOpCodes.h

lib/Backend/arm64                   =>  Lib/Backend/arm64

     MdOpcodes.h                             MdOpCodes.h

lib/Backend                         =>  Lib/Backend

     GlobOptBailout.cpp                      GlobOptBailOut.cpp
     BackEnd.cpp                             Backend.cpp

lib/Runtime/Language                =>  Lib/Runtime/Language

     SIMDFloat32x4Operation.cpp              SimdFloat32x4Operation.cpp
     AsmJSUtils.h                            AsmJsUtils.h
     AsmJSCodeGenerator.cpp                  AsmJsCodeGenerator.cpp
     AsmJSCodeGenerator.h                    AsmJsCodeGenerator.h
     SIMDInt32x4Operation.cpp                SimdInt32x4Operation.cpp
     AsmJSEncoder.h                          AsmJsEncoder.h
     AsmJSJitTemplate.h                      AsmJsJitTemplate.h
     AsmJSBytecodeGenerator.h                AsmJsByteCodeGenerator.h
     SIMDUint16x8OperationX86X64.cpp         SimdUint16x8OperationX86X64.cpp
     SIMDFloat32x4Operation.h                SimdFloat32x4Operation.h
     AsmJSBytecodeGenerator.cpp              AsmJsByteCodeGenerator.cpp
     SIMDUint16x8Operation.cpp               SimdUint16x8Operation.cpp
     AsmJSEncoder.inl                        AsmJsEncoder.inl
     SIMDBool8x16OperationX86X64.cpp         SimdBool8x16OperationX86X64.cpp
     SIMDfloat64x2OperationX86X64.cpp        SimdFloat64x2OperationX86X64.cpp
     SIMDUint8x16Operation.h                 SimdUint8x16Operation.h
     AsmJSUtils.cpp                          AsmJsUtils.cpp
     AsmJSLink.cpp                           AsmJsLink.cpp
     AsmJS.h                                 AsmJs.h
     SIMDInt32x4Operation.h                  SimdInt32x4Operation.h
     SIMDInt16x8Operation.h                  SimdInt16x8Operation.h
     SIMDUInt32x4Operation.cpp               SimdUint32x4Operation.cpp
     SIMDFloat64x2Operation.cpp              SimdFloat64x2Operation.cpp

lib/Runtime/Language/i386           =>  Lib/Runtime/Language/i386

     AsmJSJitTemplate.cpp                    AsmJsJitTemplate.cpp
     stackframe.cpp                          StackFrame.cpp
     stackframe.h                            StackFrame.h

lib/Runtime/Language                =>  Lib/Runtime/Language

     SIMDUtils.cpp                           SimdUtils.cpp
     SIMDBool32x4OperationX86X64.cpp         SimdBool32x4OperationX86X64.cpp
     AsmJsBuiltinNames.h                     AsmJsBuiltInNames.h
     SIMDBool8x16Operation.cpp               SimdBool8x16Operation.cpp

lib/Runtime/Language/arm            =>  Lib/Runtime/Language/arm

     stackframe.cpp                          StackFrame.cpp
     stackframe.h                            StackFrame.h

lib/Runtime/Language                =>  Lib/Runtime/Language

     SIMDInt8x16Operation.cpp                SimdInt8x16Operation.cpp
     SIMDBool32x4Operation.cpp               SimdBool32x4Operation.cpp
     SIMDUint16x8Operation.h                 SimdUint16x8Operation.h
     SIMDInt16x8Operation.cpp                SimdInt16x8Operation.cpp
     SIMDfloat32x4OperationX86X64.cpp        SimdFloat32x4OperationX86X64.cpp
     AsmJSEncoderHandler.inl                 AsmJsEncoderHandler.inl
     AsmJSTypes.h                            AsmJsTypes.h
     AsmJSModule.cpp                         AsmJsModule.cpp
     SIMDInt16x8OperationX86X64.cpp          SimdInt16x8OperationX86X64.cpp

lib/Runtime/Language/amd64          =>  Lib/Runtime/Language/amd64

     AsmJSJitTemplate.cpp                    AsmJsJitTemplate.cpp
     stackframe.cpp                          StackFrame.cpp
     stackframe.h                            StackFrame.h
     stackframe.inl                          StackFrame.inl

lib/Runtime/Language                =>  Lib/Runtime/Language

     AsmJSTypes.cpp                          AsmJsTypes.cpp

lib/Runtime/Language/arm64          =>  Lib/Runtime/Language/arm64

     stackframe.cpp                          StackFrame.cpp
     stackframe.h                            StackFrame.h

lib/Runtime/Language                =>  Lib/Runtime/Language

     SIMDBool16x8Operation.cpp               SimdBool16x8Operation.cpp
     SIMDInt32x4OperationX86X64.cpp          SimdInt32x4OperationX86X64.cpp
     SIMDUint8x16OperationX86X64.cpp         SimdUint8x16OperationX86X64.cpp
     SIMDInt8x16OperationX86X64.cpp          SimdInt8x16OperationX86X64.cpp
     SIMDBool16x8Operation.h                 SimdBool16x8Operation.h
     SIMDBool32x4Operation.h                 SimdBool32x4Operation.h
     SIMDUint8x16Operation.cpp               SimdUint8x16Operation.cpp
     SIMDInt8x16Operation.h                  SimdInt8x16Operation.h
     AsmJSModule.h                           AsmJsModule.h
     AsmJSLink.h                             AsmJsLink.h
     AsmJSEncoder.cpp                        AsmJsEncoder.cpp
     SIMDUInt32x4OperationX86X64.cpp         SimdUint32x4OperationX86X64.cpp
     SIMDFloat64x2Operation.h                SimdFloat64x2Operation.h
     SIMDBool16x8OperationX86X64.cpp         SimdBool16x8OperationX86X64.cpp
     SIMDBool8x16Operation.h                 SimdBool8x16Operation.h
     asmjs.cpp                               AsmJs.cpp
     SIMDUtils.h                             SimdUtils.h
     SIMDUInt32x4Operation.h                 SimdUint32x4Operation.h

lib/Runtime/Base                    =>  Lib/Runtime/Base

     ThreadContextTLSEntry.h                 ThreadContextTlsEntry.h
     ThreadContextTLSEntry.cpp               ThreadContextTlsEntry.cpp
     threadservicewrapper.h                  ThreadServiceWrapper.h
     scriptcontextbase.h                     ScriptContextBase.h

lib/Runtime/Library                 =>  Lib/Runtime/Library

     JavascriptSIMDBool8x16.cpp              JavascriptSimdBool8x16.cpp
     JavascriptSIMDUint8x16.h                JavascriptSimdUint8x16.h
     JavascriptSIMDBool16x8.h                JavascriptSimdBool16x8.h
     SIMDFloat64x2Lib.cpp                    SimdFloat64x2Lib.cpp
     JavascriptSIMDBool16x8.cpp              JavascriptSimdBool16x8.cpp
     JavascriptSIMDUint16x8.h                JavascriptSimdUint16x8.h
     javascripttypednumber.h                 JavascriptTypedNumber.h
     JavascriptSIMDUint8x16.cpp              JavascriptSimdUint8x16.cpp
     SIMDUInt32x4Lib.h                       SimdUint32x4Lib.h
     SIMDInt8x16Lib.cpp                      SimdInt8x16Lib.cpp
     SIMDFloat32x4Lib.cpp                    SimdFloat32x4Lib.cpp
     SIMDInt16x8Lib.h                        SimdInt16x8Lib.h
     moduleroot.cpp                          ModuleRoot.cpp
     JavascriptSIMDInt32x4.cpp               JavascriptSimdInt32x4.cpp
     SIMDBool8x16Lib.cpp                     SimdBool8x16Lib.cpp
     JavascriptSIMDInt32x4.h                 JavascriptSimdInt32x4.h
     SIMDBool16x8Lib.h                       SimdBool16x8Lib.h
     typedArrayEnumerator.cpp                TypedArrayEnumerator.cpp
     SIMDBool32x4Lib.h                       SimdBool32x4Lib.h
     JavascriptSIMDFloat64x2.cpp             JavascriptSimdFloat64x2.cpp
     dataview.h                              DataView.h
     SIMDInt16x8Lib.cpp                      SimdInt16x8Lib.cpp
     JavascriptSIMDInt16x8.cpp               JavascriptSimdInt16x8.cpp
     SIMDUInt32x4Lib.cpp                     SimdUint32x4Lib.cpp
     SIMDInt8x16Lib.h                        SimdInt8x16Lib.h
     SIMDInt32x4Lib.cpp                      SimdInt32x4Lib.cpp
     JavascriptSIMDInt8x16.cpp               JavascriptSimdInt8x16.cpp
     JavascriptSIMDUint16x8.cpp              JavascriptSimdUint16x8.cpp
     JavascriptSIMDInt16x8.h                 JavascriptSimdInt16x8.h
     SIMDBool8x16Lib.h                       SimdBool8x16Lib.h
     JavascriptSIMDFloat64x2.h               JavascriptSimdFloat64x2.h
     JavascriptSIMDInt8x16.h                 JavascriptSimdInt8x16.h
     SIMDUint16x8Lib.cpp                     SimdUint16x8Lib.cpp

lib/Runtime/Library/InJavascript    =>  Lib/Runtime/Library/InJavascript

     intl.js.bc.32b.h                        Intl.js.bc.32b.h
     intl.js.bc.64b.h                        Intl.js.bc.64b.h

lib/Runtime/Library                 =>  Lib/Runtime/Library

     dataview.cpp                            DataView.cpp
     JavascriptSIMDUInt32x4.h                JavascriptSimdUint32x4.h
     SIMDUint16x8Lib.h                       SimdUint16x8Lib.h

lib/Runtime/Library/amd64           =>  Lib/Runtime/Library/amd64

     javascriptfunctiona.asm                 JavascriptFunctionA.asm

lib/Runtime/Library                 =>  Lib/Runtime/Library

     JavascriptSIMDBool32x4.cpp              JavascriptSimdBool32x4.cpp
     JavascriptSIMDFloat32x4.h               JavascriptSimdFloat32x4.h
     SIMDInt32x4Lib.h                        SimdInt32x4Lib.h
     JavascriptSIMDBool32x4.h                JavascriptSimdBool32x4.h
     javascripttypednumber.cpp               JavascriptTypedNumber.cpp
     SIMDBool16x8Lib.cpp                     SimdBool16x8Lib.cpp
     JavascriptSIMDFloat32x4.cpp             JavascriptSimdFloat32x4.cpp
     typedArrayEnumerator.h                  TypedArrayEnumerator.h
     SIMDUint8x16Lib.h                       SimdUint8x16Lib.h
     SIMDFloat32x4Lib.h                      SimdFloat32x4Lib.h
     SIMDFloat64x2Lib.h                      SimdFloat64x2Lib.h
     JavascriptSIMDUInt32x4.cpp              JavascriptSimdUint32x4.cpp
     SIMDBool32x4Lib.cpp                     SimdBool32x4Lib.cpp
     JavascriptSIMDBool8x16.h                JavascriptSimdBool8x16.h
     moduleroot.h                            ModuleRoot.h
     SIMDUint8x16Lib.cpp                     SimdUint8x16Lib.cpp

lib/Runtime/ByteCode                =>  Lib/Runtime/ByteCode

     BackEndOpcodeAttr.cpp                   BackendOpCodeAttr.cpp
     byteCodeCacheReleaseFileVersion.h       ByteCodeCacheReleaseFileVersion.h
     ByteCodeAPI.h                           ByteCodeApi.h
     AsmJSByteCodeDumper.cpp                 AsmJsByteCodeDumper.cpp
     AsmJSByteCodeDumper.h                   AsmJsByteCodeDumper.h
     BackEndOpcodeAttr.h                     BackendOpCodeAttr.h
     Opcodes.cpp                             OpCodes.cpp

Hi @jianchun, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Jianchun Xu). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

I definitely approve.
A concern here is that it might be very difficult to merge this change into various feature branches because of the renames. I looked into this a bit and it seems like the "easiest" thing to do might be to rename all the files in a commit off the original branch point and then rebase the entire branch on top of the rename commit so that as far as git is concerned, all the changes in the branch were always with respect to the newly-named files, but it sounded pretty fragile to me, and for published branches this is not an acceptable approach.
I haven't tried this yet, but it might work if you made a similar commit in each feature branch before merging master into those branches (linux, etc.). Git will either figure it out and merge correctly or it will complain that the new files were added in both branches, and might give you a chance to resolve the issue.

For the various *SIMD* files, I think the general recommendation in camelCase and PascalCase is to only capitalize the first letter of an acronym to make it easier to see the "word" boundaries.
Example: XmlReader instead of XMLReader

Agree with Simd over SIMD.  Also Cfg over CFG and any others I missed.

@jianchun Thanks for pushing this forward!

@dilijev Thanks for the info! I'll try a merge in feature branch to see how intelligent git is.
@ianwjhalliday @dilijev Yes, exactly because the code used SIMD... CFG... as class names.
@tfarina Thanks for filing the issue and discussion.

Agree with Simd over SIMD.  Also Cfg over CFG and any others I missed.

@ianwjhalliday @dilijev One option is to have Simd, Cfg (and Api as I recall) in file names here. We can refactor the code later. What do you think?

Ah the class names I see.  Yes, I think renaming the files now in the desired casing is a good start and then changing the class names later if we find time.

As for rules on acronyms in PascalCase/camelCase, I just found a handy article by Microsoft:
https://msdn.microsoft.com/en-us/library/141e06ef(v=vs.71).aspx

When using acronyms, use Pascal case or camel case for acronyms more than two characters long. For example, use HtmlButton or htmlButton. However, you should capitalize acronyms that consist of only two characters, such as System.IO instead of System.Io.

So we should use IR instead of Ir.
However since ID is an abbreviation of identifier rather than an acronym I'm not sure whether we should use ID or Id.

@jianchun @ianwjhalliday Yes, I agree we should fix the filenames in one go since this is probably more traumatic than refactoring the type names later, which we can do more easily on an as-seen basis.
@jianchun You're already doing this but I'll reiterate: renames should be done in a commit separately from any other changes to help Git realize the renames easier.
That said, in a separate commit, might it be a good idea to add TODOs on the classes that should be renamed?

MdOpcodes.h                             MdOpCodes.h

Not sure how I feel about camel casing this particular example. "opcode" is a single-word abbreviation of "operation code". But I think we already have types that are spelled with OpCode... In this case I would go with the convention in our code, I guess.

@dotnet-bot test Windows x64_test please

Do we know how Windows machines will handle this/what (if anything) people will need to do to merge their changes after this goes through? On StackOverflow, the results I'm seeing for this topic are pretty scary.

Also, I prefer "Backend" over "BackEnd", as backend is one word. It's also less invasive (only a couple files vs. moving whole directory).

+1 on Backend.

Not sure how I feel about camel casing this particular example. "opcode" is a single-word abbreviation of "operation code". But I think we already have types that are spelled with OpCode... In this case I would go with the convention in our code, I guess.

Yes, we have most code spells OpCode. So I kept it.

Yes, we have most code spells OpCode. So I kept it.

SGTM

Since there's no good way to track progress on this kind of code review I made myself a table. I'll tick off items as I look.

[ ] lib/Parser                          =>  Lib/Parser

[ ]     alloc.cpp                               Alloc.cpp
[ ]     scan.h                                  Scan.h
[ ]     hash.h                                  Hash.h
[ ]     jsscan.js                               JsScan.js
[ ]     parse.h                                 Parse.h
[ ]     hash.cpp                                Hash.cpp
[ ]     parse.cpp                               Parse.cpp
[ ]     regcodes.h                              RegCodes.h
[ ]     scan.cpp                                Scan.cpp
[ ]     RegexOpcodes.h                          RegexOpCodes.h
[ ]     RegexRunTime.h                          RegexRuntime.h
[ ]     alloc.h                                 Alloc.h
[ ]     hashfunc.cpp                            HashFunc.cpp
[ ]     RegexRunTime.cpp                        RegexRuntime.cpp

[ ] lib/common/common                   =>  Lib/Common/Common

[ ]     cfglogger.h                             CFGLogger.h
[ ]     int16math.h                             Int16Math.h
[ ]     cfglogger.cpp                           CFGLogger.cpp

[ ] lib/common/DataStructures           =>  Lib/Common/DataStructures

[ ]     dictionary.h                            Dictionary.h
[ ]     Dlist.h                                 DList.h
[ ]     comparer.h                              Comparer.h
[ ]     growingArray.h                          GrowingArray.h
[ ]     interval.h                              Interval.h
[ ]     stack.h                                 Stack.h
[ ]     growingArray.cpp                        GrowingArray.cpp
[ ]     list.h                                  List.h

[ ] lib/common/Exceptions               =>  Lib/Common/Exceptions

[ ]     reporterror.cpp                         ReportError.cpp
[ ]     reporterror.h                           ReportError.h

[ ] lib/common/Memory                   =>  Lib/Common/Memory

[ ]     heapinfo.cpp                            HeapInfo.cpp
[ ]     leakreport.h                            LeakReport.h
[ ]     heapbucket.h                            HeapBucket.h
[ ]     collectionstate.h                       CollectionState.h
[ ]     heapbucket.inl                          HeapBucket.inl
[ ]     heapblock.inl                           HeapBlock.inl
[ ]     heapbucket.cpp                          HeapBucket.cpp
[ ]     heapinfo.h                              HeapInfo.h
[ ]     leakreport.cpp                          LeakReport.cpp

[ ] lib/common                          =>  Lib/Common

[ ]     resource.h                              Resource.h
[ ]     commoninl.h                             CommonInl.h

[ ] lib/common/util                     =>  Lib/Common/Util

[ ]     pinned.cpp                              Pinned.cpp
[ ]     pinned.h                                Pinned.h

[ ] lib/jsrt                            =>  Lib/Jsrt

[ ]     jsrtcontext.h                           JsrtContext.h
[ ]     jsrtThreadService.h                     JsrtThreadService.h
[ ]     jsrtRuntime.h                           JsrtRuntime.h
[ ]     jsrtThreadService.cpp                   JsrtThreadService.cpp
[ ]     jsrtRuntime.cpp                         JsrtRuntime.cpp
[ ]     chakracommon.h                          ChakraCommon.h
[ ]     jsrtinternal.h                          JsrtInternal.h
[ ]     jsrtcontext.cpp                         JsrtContext.cpp
[ ]     jsrtExternalObject.cpp                  JsrtExternalObject.cpp
[ ]     jsrtExternalObject.h                    JsrtExternalObject.h

[ ] lib/Backend                         =>  Lib/BackEnd

[ ]     GlobOptSimd128.cpp                      GlobOptSIMD128.cpp

[ ] lib/Backend/i386                    =>  Lib/BackEnd/i386

[ ]     MdOpcodes.h                             MdOpCodes.h

[ ] lib/Backend                         =>  Lib/BackEnd

[ ]     LowerMDSharedSimd128.cpp                LowerMDSharedSIMD128.cpp

[ ] lib/Backend/arm                     =>  Lib/BackEnd/arm

[ ]     MdOpcodes.h                             MdOpCodes.h

[ ] lib/Backend                         =>  Lib/BackEnd

[ ]     BackEndOpcodeAttrAsmJs.h                BackEndOpCodeAttrAsmJs.h
[ ]     BackEndOpcodeAttrAsmJs.cpp              BackEndOpCodeAttrAsmJs.cpp
[ ]     CodegenNumberAllocator.cpp              CodeGenNumberAllocator.cpp
[ ]     Chakra.Backend.vcxproj.filters          Chakra.BackEnd.vcxproj.filters

[ ] lib/Backend/amd64                   =>  Lib/BackEnd/amd64

[ ]     MdOpcodes.h                             MdOpCodes.h

[ ] lib/Backend/arm64                   =>  Lib/BackEnd/arm64

[ ]     MdOpcodes.h                             MdOpCodes.h

[ ] lib/Backend                         =>  Lib/BackEnd

[ ]     Chakra.Backend.vcxproj                  Chakra.BackEnd.vcxproj
[ ]     GlobOptBailout.cpp                      GlobOptBailOut.cpp

[ ] lib/Runtime/Language                =>  Lib/Runtime/Language

[ ]     AsmJSUtils.h                            AsmJsUtils.h
[ ]     SimdOps.h                               SIMDOps.h
[ ]     AsmJSCodeGenerator.cpp                  AsmJsCodeGenerator.cpp
[ ]     AsmJSCodeGenerator.h                    AsmJsCodeGenerator.h
[ ]     AsmJSEncoder.h                          AsmJsEncoder.h
[ ]     AsmJSJitTemplate.h                      AsmJsJitTemplate.h
[ ]     AsmJSBytecodeGenerator.h                AsmJsByteCodeGenerator.h
[ ]     AsmJSBytecodeGenerator.cpp              AsmJsByteCodeGenerator.cpp
[ ]     AsmJSEncoder.inl                        AsmJsEncoder.inl
[ ]     SIMDfloat64x2OperationX86X64.cpp        SIMDFloat64x2OperationX86X64.cpp
[ ]     AsmJSUtils.cpp                          AsmJsUtils.cpp
[ ]     AsmJSLink.cpp                           AsmJsLink.cpp
[ ]     SIMDUInt32x4Operation.cpp               SIMDUint32x4Operation.cpp

[ ] lib/Runtime/Language/i386           =>  Lib/Runtime/Language/i386

[ ]     AsmJSJitTemplate.cpp                    AsmJsJitTemplate.cpp
[ ]     stackframe.cpp                          StackFrame.cpp
[ ]     stackframe.h                            StackFrame.h

[ ] lib/Runtime/Language                =>  Lib/Runtime/Language

[ ]     AsmJsBuiltinNames.h                     AsmJsBuiltInNames.h

[ ] lib/Runtime/Language/arm            =>  Lib/Runtime/Language/arm

[ ]     stackframe.cpp                          StackFrame.cpp
[ ]     stackframe.h                            StackFrame.h

[ ] lib/Runtime/Language                =>  Lib/Runtime/Language

[ ]     SIMDfloat32x4OperationX86X64.cpp        SIMDFloat32x4OperationX86X64.cpp
[ ]     AsmJSEncoderHandler.inl                 AsmJsEncoderHandler.inl
[ ]     AsmJSTypes.h                            AsmJsTypes.h
[ ]     AsmJSModule.cpp                         AsmJsModule.cpp

[ ] lib/Runtime/Language/amd64          =>  Lib/Runtime/Language/amd64

[ ]     AsmJSJitTemplate.cpp                    AsmJsJitTemplate.cpp
[ ]     stackframe.cpp                          StackFrame.cpp
[ ]     stackframe.h                            StackFrame.h
[ ]     stackframe.inl                          StackFrame.inl

[ ] lib/Runtime/Language                =>  Lib/Runtime/Language

[ ]     AsmJSTypes.cpp                          AsmJsTypes.cpp

[ ] lib/Runtime/Language/arm64          =>  Lib/Runtime/Language/arm64

[ ]     stackframe.cpp                          StackFrame.cpp
[ ]     stackframe.h                            StackFrame.h

[ ] lib/Runtime/Language                =>  Lib/Runtime/Language

[ ]     AsmJSModule.h                           AsmJsModule.h
[ ]     AsmJSLink.h                             AsmJsLink.h
[ ]     AsmJSEncoder.cpp                        AsmJsEncoder.cpp
[ ]     SIMDUInt32x4OperationX86X64.cpp         SIMDUint32x4OperationX86X64.cpp
[ ]     asmjs.cpp                               AsmJs.cpp
[ ]     SIMDUInt32x4Operation.h                 SIMDUint32x4Operation.h

[ ] lib/Runtime/Base                    =>  Lib/Runtime/Base

[ ]     threadservicewrapper.h                  ThreadServiceWrapper.h
[ ]     scriptcontextbase.h                     ScriptContextBase.h

[ ] lib/Runtime/Library                 =>  Lib/Runtime/Library

[ ]     javascripttypednumber.h                 JavascriptTypedNumber.h
[ ]     SIMDUInt32x4Lib.h                       SIMDUint32x4Lib.h
[ ]     moduleroot.cpp                          ModuleRoot.cpp
[ ]     typedArrayEnumerator.cpp                TypedArrayEnumerator.cpp
[ ]     dataview.h                              DataView.h
[ ]     SimdLib.h                               SIMDLib.h
[ ]     SIMDUInt32x4Lib.cpp                     SIMDUint32x4Lib.cpp

[ ] lib/Runtime/Library/InJavascript    =>  Lib/Runtime/Library/InJavascript

[ ]     intl.js.bc.32b.h                        Intl.js.bc.32b.h
[ ]     intl.js.bc.64b.h                        Intl.js.bc.64b.h

[ ] lib/Runtime/Library                 =>  Lib/Runtime/Library

[ ]     dataview.cpp                            DataView.cpp
[ ]     JavascriptSIMDUInt32x4.h                JavascriptSIMDUint32x4.h

[ ] lib/Runtime/Library/amd64           =>  Lib/Runtime/Library/amd64

[ ]     javascriptfunctiona.asm                 JavascriptFunctionA.asm

[ ] lib/Runtime/Library                 =>  Lib/Runtime/Library

[ ]     javascripttypednumber.cpp               JavascriptTypedNumber.cpp
[ ]     typedArrayEnumerator.h                  TypedArrayEnumerator.h
[ ]     JavascriptSIMDUInt32x4.cpp              JavascriptSIMDUint32x4.cpp
[ ]     moduleroot.h                            ModuleRoot.h

[ ] lib/Runtime/ByteCode                =>  Lib/Runtime/ByteCode

[ ]     OpCodesSimd.h                           OpCodesSIMD.h
[ ]     BackEndOpcodeAttr.cpp                   BackEndOpCodeAttr.cpp
[ ]     byteCodeCacheReleaseFileVersion.h       ByteCodeCacheReleaseFILEVersion.h
[ ]     AsmJSByteCodeDumper.cpp                 AsmJsByteCodeDumper.cpp
[ ]     AsmJSByteCodeDumper.h                   AsmJsByteCodeDumper.h
[ ]     BackEndOpcodeAttr.h                     BackEndOpCodeAttr.h
[ ]     Opcodes.cpp                             OpCodes.cpp

Also, I prefer "Backend" over "BackEnd", as backend is one word. It's also less invasive (only a couple files vs. moving whole directory).

+1 on Backend.

Ok, renaming to Backend.

@MikeHolman

It's also less invasive (only a couple files vs. moving whole directory).

I stand by Backend being better but since lib => Lib the fewer files argument doesn't apply.

I'm undecided on AsmJS* versus AsmJs*...

Updated checklist. I'll come back to this later.

@dilijev Yeah, you're right, I only noticed the lib->Lib change after. Also, I think AsmJs is better, and it's how we use it in most of our codebase.

thanks for driving this

Updated checklist. I'll come back to this later.

@dilijev Thanks for looking! It is still hard to keep track. The list was created on an older version and some comments no longer apply.

Do we know how Windows machines will handle this/what (if anything) people will need to do to merge their changes after this goes through? On StackOverflow, the results I'm seeing for this topic are pretty scary.

I just performed a mock merge to linux, WebAssembly and JsRTDebugging. All went with no trouble! (WebAssembly added some files to lib/... and those new files remain under lowercase lib. Needs some updates after merging.)
BTW, Lib/Parser seems inherited some code all with lowercase file names which I left touched. You can browse them here: https://github.com/jianchun/ChakraCore/tree/case/Lib/Parser. Let me know if you think we should refresh them too.
Also I didn't touch bin in order to control this change size. (bin/ch looks fine on Linux.)

@jianchun, awesome, thanks for verifying! Definitely puts my mind at ease.
Skimmed through the rest of the list and it lgtm.

@MikeHolman Thank you! Could you please also try to merge it to your feature branch, to double test and just in case? You can simply merge https://github.com/jianchun/ChakraCore.git, case branch.

@dilijev I read your current list and here are some replies:

Jsrt, BailOut are in the same category as OpCode -- Majority of our code is using that form. e.g. JsrtContext, JsrtRuntime, JsrtThreadService, ..., BailOutKind, BailOutNames, BailOutRecord...
Jsrt/ChakraCommon.h is a public JSRT header, included by ChakraCore.h. So yes, that is its right place.

@MikeHolman after sleeping on it I also agree AsmJs is better.

@jianchun Sounds good. I'll update the list to mark those items as resolved.

I updated the list, here's the filtered version of stuff I haven't marked done.

[ ] ...

[ ]     hashfunc.cpp                            HashFunc.cpp // there are some recommendations not to use abbreviations like Func but since we all know what it means, it seems fine
[ ]     cfglogger.h                             CFGLogger.h // Cfg instead of CFG
[ ]     cfglogger.cpp                           CFGLogger.cpp // Cfg

[ ] lib/Backend                         =>  Lib/BackEnd // Backend should not change.
[ ] lib/Backend/i386                    =>  Lib/BackEnd/i386
[ ] lib/Backend                         =>  Lib/BackEnd

[ ]     LowerMDSharedSimd128.cpp                LowerMDSharedSIMD128.cpp // keep Simd

[ ] lib/Backend/arm                     =>  Lib/BackEnd/arm
[ ] lib/Backend                         =>  Lib/BackEnd

[ ]     Chakra.Backend.vcxproj.filters          Chakra.BackEnd.vcxproj.filters // keep Backend

[ ] lib/Backend/amd64                   =>  Lib/BackEnd/amd64
[ ] lib/Backend/arm64                   =>  Lib/BackEnd/arm64
[ ] lib/Backend                         =>  Lib/BackEnd

[ ]     Chakra.Backend.vcxproj                  Chakra.BackEnd.vcxproj // keep Backend
[ ]     SimdOps.h                               SIMDOps.h // keep Simd
[ ]     SIMDfloat64x2OperationX86X64.cpp        SIMDFloat64x2OperationX86X64.cpp // change to Simd
[ ]     SIMDUInt32x4Operation.cpp               SIMDUint32x4Operation.cpp // change to Simd
[ ]     AsmJsBuiltinNames.h                     AsmJsBuiltInNames.h // this is another instance where we are inconsistent across filenames and source -- in both cases about half and half

[ ] lib/Runtime/Language/arm            =>  Lib/Runtime/Language/arm // did you mean to keep this as 'arm' and not 'ARM'?
[ ] lib/Runtime/Language/amd64          =>  Lib/Runtime/Language/amd64 `// did you mean to keep this as 'amd64' and not 'AMD64'?

[ ]     SIMDUInt32x4OperationX86X64.cpp         SIMDUint32x4OperationX86X64.cpp // Simd
[ ]     SIMDUInt32x4Operation.h                 SIMDUint32x4Operation.h // Simd
[ ]     SIMDUInt32x4Lib.h                       SIMDUint32x4Lib.h
[ ]     SimdLib.h                               SIMDLib.h // Simd
[ ]     SIMDUInt32x4Lib.cpp                     SIMDUint32x4Lib.cpp // Simd
[ ]     JavascriptSIMDUInt32x4.h                JavascriptSIMDUint32x4.h // Simd

[ ] lib/Runtime/Library/amd64           =>  Lib/Runtime/Library/amd64

[ ]     JavascriptSIMDUInt32x4.cpp              JavascriptSIMDUint32x4.cpp
[ ]     OpCodesSimd.h                           OpCodesSIMD.h // Simd
[ ]     byteCodeCacheReleaseFileVersion.h       ByteCodeCacheReleaseFILEVersion.h // keep File

@jianchun Yup, tried on my big branches and merge seems ok. Only issue I'm seeing is with my new projects still referring to "lib", which I will have to fix up (as you noted).
I also tried adding a new file, since name on Windows file system didn't get changed, and when unstaged it appears listed as untracked file "lib/asdf.txt", but once staged it turns into added file "Lib/asdf.txt", so git seems to have enough understanding and compensates appropriately.

@MikeHolman Thanks for verification!
@dilijev Cfg, Simd, Backend were done. i386, amd64, arm, arm64 seems chosen at many places. I'm personally fine with them.

@MikeHolman @jianchun looks like it will be fairly smooth

* [ ]     hashfunc.cpp                            HashFunc.cpp `// there are some recommendations not to use abbreviations like Func but since we all know what it means, it seems fine`
* [ ]     AsmJSBytecodeGenerator.h                AsmJsByteCodeGenerator.h `// in filenames we see more ByteCode than Bytecode (these are the only two instances of Bytecode I can see). 'git grep ... | wc' shows that there are 145 lines containing Bytecode and 2552 lines containing ByteCode. We should make it an item to refactor the instances of Bytecode to ByteCode so everything is consistent.`
* [ ]     AsmJsBuiltinNames.h                     AsmJsBuiltInNames.h `// this is another instance where we are inconsistent across filenames and source -- in both cases about half and half`
* [ ]     byteCodeCacheReleaseFileVersion.h       ByteCodeCacheReleaseFILEVersion.h `// keep File`

@dilijev Thanks for looking! ByteCode and File are already addressed in latest commit and in PR message. BuiltIn usage is indeed inconsistent.

@jianchun Sounds good. Looks like most things are resolved. On the split usage, I think we should prefer ByteCode. However, Builtin versus BuiltIn is not as clear. I think builtin as a word is less awkward because the alternative is a hyphenated built-in.
The terminology and precedent also seems to be split down the middle. In this case I'm in favor of just making the minimal changes to make it work because there's no need to be more disruptive than necessary.

LGTM. Signing off.

@dilijev Thanks a lot!

authors: MikeHolman dilijev ianwjhalliday jianchun msftclas nojvek tfarina


text:
Create notifications and their pending intents when they are needed r…

…ather than when the Notification Controller is initialized.

Addresses issue #91 by lazily creating pending intents for notifications.

source: gharchive/pull-request

repo: Microsoft/EmbeddedSocial-Android-SDK

license: MIT

license_type: permissive

license_source: github-api


text:
Intellisense: from flask import request | request:

I am importing a bunch of things from Flask (latest version) and Intellisense is working for all of them but the standard Request object "request", which Intellisense does not recognise. Intellisense recognises all other imports and works correctly there.
The code is running, it is however annoying to have most of intellisense break down completely just because it's not able to resolve a single import.

When you say "does not recognize", do you mean that it shows up as an unknown type? This is somewhat expected, as Flask uses a wrapper class around a thread-local variable for request (and some other globals), which makes it such that it is impossible to determine its true type without an actual request existing.
Our aim is to solve these issues by eventually supporting type hints (#82) and hoping that Flask will also add support for them. There's really nothing else we can reliably do about it with a type this complex right now.

source: gharchive/issue

authors: DubbleClick zooba

repo: Microsoft/PTVS


text:
Fixes #2730 Error pop-up when viewing git merge window on .py file

Fixes #2730 Error pop-up when viewing git merge window on .py file
Handles error cases initializing key bindings.

👍

authors: huguesv zooba


text:
Deploy rtvs package to broker in remote scenarios

Currently, there's no special handling for the rtvs package - it is simply assumed that it can be found in the same place as the broker. However, it may be undesirable to deploy it together with the broker, since it doesn't have a stable API surface, requiring broker and RTVS versions to match exactly. If the package is deployed instead, it can then be loaded from the deployed location.

@karthiknadig This should probably reuse the work that you did for file transfer as much as possible - any suggestions on how to handle it best?

Some further food for thought. A lot of the package depends on native functions that are exported out of the host, so there's also the host/package sync problem. I see three possibilities here:

Stabilize the API exposed to R by the host as it is today.
Deploy the host binary alongside the package, using some special broker API for that purpose (it would have to be a special API, since existing project deployment code relies on R, and therefore on the host).
Split the API into parts that have to be in the host, and everything else. The first part would be the things that are intrinsically related to host operation - probably just message-related stuff (send_notification) and blob API. The second part would be everything else - IDE graphics device, all the debugger helpers, JSON serializer etc. The trimmed-down host API is then stabilized and deployed with the broker, while the second part can then go into a separate DLL that can be deployed separately as needed.

@jflam, you might want to take a look as well.

When deploy the program (simply copy all files under Debug folder to another machine with R installed), an exception throws at StartHostAsync.
_session = RHostSession.Create(id);
_session.StartHostAsync(new RHostSessionCallback()).Wait();
Did I miss somthing?

repo: Microsoft/RTVS


text:
R Markdown publish command fails on linux with pandoc not available.

This is after installing pandoc and pdflatex. The check in the command specifically looks for "pandoc.exe"  and "pdflatex.exe". On linux it should look for "pandoc" and "pdflatex"

Should we be checking for both? Or perhaps session should be telling if it is on *nix? Or maybe add special method like CheckExecutableExistsOnPath to the session commands instead of code doing
Session.EvaluateAsync<bool>(Invariant($"rtvs:::exists_on_path('{fileName}')") directly?

authors: MikhailArkhipov karthiknadig


text:
Part 2 of the Host.Client split.

Adds a bunch of services to support WebSocketClient, Remote help and shiny, and assembly by type.

I need to add the copyright header.  I will send a update with that.

👍

👍


text:
Unspecified required types

Now we can make the required types using parentheses or separated definitions. Is this the spec?
TypeScript Version:  master
Code
type PersonStrict = { name: string, age: number };
type PersonPartial = { name?: string, age?: number };
type Required<T> = { [K in (keyof T)]: T[K] };
const person: Required<PersonPartial> = { name: "iwata" };

or
...
type Keys<T> = keyof T;
type Required<T> = { [K in Keys<T>]: T[K] };
const person: Required<PersonPartial> = { name: "iwata" };

index.ts(4,7): error TS2322: Type '{ name: string; }' is not assignable to type 'Required<PersonPartial>'.
  Property 'age' is missing in type '{ name: string; }'.

cc @ahejlsberg @weswigham

No, that is an unintended effect and it will no longer be the case with #12826. Also, it doesn't really work because you can't get rid of the undefined that was added to each property type by Partial<T>.

I see, thanks for the answer.

Do you fix this effect? This will be a breaking change after many users found this and use as a hack.

We reserve the right to make back compat breaks for things that are effectively bugs. "Things behaved differently when I added parentheses which should have been meaningless" isn't something anyone should have taken a dependency on.

authors: RyanCavanaugh ahejlsberg falsandtru

repo: Microsoft/TypeScript


text:
Type inference for generator yield statement

TypeScript Version:  2.2.1
I've just started with Typescript and ES6/ES7 features and have run into the following case where I'm unable to enforce type-safety with generators.
I'm using generators in a context where the return value of the yield statement (the injected value from generator.next(injected)) has a known type interface. I've managed to enforce this contract by extending IterableIterator:
interface TypedIterableIterator<T, N> extends IterableIterator<T> {
    next(value?: N): IteratorResult<T>;
}

However, Typescript is still unable to narrow down the type of injectedNum.
function* yieldNumber(num: number): TypedIterableIterator<number, number> {
    let injectedNum = yield num; // has inferred type `any`
}

function test() {
    let numYielder = yieldNumber(2);
    numYielder.next('give me type-safety'); // successfully fails to compile
}

The only workaround I've found so far is to manually annotate the injected value and cross my fingers that I didn't use the wrong type.
{
    let injectedNum: number = yield num;
    // type-safe from here on... almost
}

This is a very simple use case, but my actual use case is with redux-saga, which heavily uses generators. Example code:
let returnValue = yield call(callback); // return value type of `callback` is lost

@ssynix this comment and this answer, both from #2983 may interest you. You might also want to check out the discussion in #2873.

Thanks for the links! I like the term "generator return type propagation". Couldn't figure out the right set of keywords to look up this topic earlier.
I'm going to close this since it's clearly a duplicate of what's being discussed in mentioned links.

authors: ssynix yortus


text:
Compiler emits code that crashes when extending 'null'

function f() {
    class C extends null {
        constructor() { return Object.create(null); }
    }
    var c = new C();
    return !(c instanceof Object)
        && Function.prototype.isPrototypeOf(C)
        && Object.getPrototypeOf(C.prototype) === null;
}

console.log(f());

Expected: true
Actual:
    __.prototype = b.prototype;
                    ^
TypeError: Cannot read property 'prototype' of null

this is working as expected now.

authors: DanielRosenwasser mhegazy


text:
Slow loading of IntelliSense in angular project

From https://github.com/Microsoft/vscode/issues/57017

TypeScript Version:  3.1.0-dev.20180907

Search Terms:
Repo
git clone https://github.com/HymanZHAN/DatingApp.git
cd DatingApp
cd DatingApp-SPA
npm install

Then open a ts file in vs code and trigger intellisense
Bug:
It takes around 6 seconds for the project to load. Here is the log: tsserver.log
This is an improvement over 3.0.3
Playground Link:
Related Issues:

Actual completion doesn't take time:

Info 999  [15:22:33.284] request:
    {"seq":6,"type":"request","command":"completionInfo","arguments":{"file":"c:/Users/matb/projects/DatingApp/DatingApp-SPA/src/app/app.component.ts","line":8,"offset":37,"includeExternalModuleExports":true,"includeInsertTextCompletions":true}}
Info 1000 [15:22:33.291] getCompletionData: Get current token: 0
Info 1001 [15:22:33.291] getCompletionData: Is inside comment: 0
Info 1002 [15:22:33.291] getCompletionData: Get previous token 1: 0
Info 1003 [15:22:33.292] getCompletionsAtPosition: isCompletionListBlocker: 1
Info 1004 [15:22:33.346] getCompletionData: Semantic work: 54
Info 1005 [15:22:33.401] getCompletionsAtPosition: getCompletionEntriesFromSymbols: 33
Perf 1006 [15:22:33.444] 6::completionInfo: elapsed time (in milliseconds) 160.0651

Seems like 2-3 seconds spent creating file watchers for files in node_modules folder (that are included in program by module resolution) #26135 could help with that.

There is exception in there. Need to check if we can repro that.

Err 988   [15:22:33.278] Exception on executing command {"seq":2,"type":"request","command":"open","arguments":{"file":"c:/Users/matb/projects/DatingApp/DatingApp-SPA/src/app/app.component.ts","fileContent":"import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from './_services/auth.service';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { User } from './_models/user';\r\n@Component({\r\n  selector: 'app-root',\r\n  templateUrl: './app.component.html',\r\n  styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent implements OnInit {\r\n  jwtHelper = new JwtHelperService();\r\n\r\n  constructor(private authService: AuthService) {}\r\n\r\n  ngOnInit(): void {\r\n    const token = localStorage.getItem('token');\r\n    const user: User = JSON.parse(localStorage.getItem('user'));\r\n\r\n    if (token) {\r\n      this.authService.decodedToken = this.jwtHelper.decodeToken(token);\r\n    }\r\n\r\n    if (user) {\r\n      this.authService.currentUser = user;\r\n      this.authService.changeMemberPhoto(user.photoUrl);\r\n    }\r\n  }\r\n}\r\n","scriptKindName":"TS","projectRootPath":"c:\\Users\\matb\\projects\\DatingApp\\DatingApp-SPA"}}:

    Debug Failure. False expression.

    Error: Debug Failure. False expression.
    at ProjectService.getOrCreateScriptInfoWorker (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:119086:30)
    at ProjectService.getOrCreateScriptInfoOpenedByClientForNormalizedPath (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:119050:29)
    at ProjectService.openClientFileWithNormalizedPath (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:119249:33)
    at IOSession.Session.openClientFile (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:120882:37)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:120074:31)
    at c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:121542:88
    at IOSession.Session.executeWithRequestId (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:121533:28)
    at IOSession.Session.executeCommand (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:121542:33)
    at IOSession.Session.onMessage (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:121562:35)
    at Interface.<anonymous> (c:\Users\matb\projects\DatingApp\DatingApp-SPA\node_modules\typescript\lib\tsserver.js:122816:27)
    at emitOne (events.js:116:13)
    at Interface.emit (events.js:211:7)
    at Interface._onLine (readline.js:282:10)
    at Interface._normalWrite (readline.js:424:12)
    at Socket.ondata (readline.js:141:10)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at Pipe.onread (net.js:594:20)

Noticing there was getErr queued before completions so it would be timing dependent on as to how long before completion request is sent (if already computing errors (which is not the case in the log) we wont be able to see completion till diagnostics for that file are complete)

Yes completions are pretty quick after the project is loaded. It's just that first open that takes a little while
Perf 978  [15:26:12.586] 2::open: async elapsed time (in milliseconds) 6082.5485

authors: mjbvz sheetalkamat


text:
Feature Request: Allow aliasing unions

If I need to repeat a union type in multiple places, it would be very nice to have an alias from that union type
For example, if I can assign
interface AnyElementList = NodeList|[Node]|[Element]|Text

The above syntax is not something I recommend. I don't know what the best syntax would be but it would be nice if I can alias all those union types in one type and re-use it elsewhere

This is supported in 1.4 and above. The syntax is:
type AnyElementList = NodeList | Node[] | Element[] | Text;

Sweet!
Thank Jason, I asked this question in Gitter a couple of hours ago. You guys should hangout there more! :)

Is it possible to have a generic signature for the aliasing unions?
type AnyElementList<T> = NodeList<T> | Node[] | Element[] | Text;

@danylaporte yup, that's slated for 1.6. See our roadmap.

Generic type aliases are actually checked in already. Feel free to try it out early if you like.

Nice! Thanks.

authors: DanielRosenwasser JsonFreeman danylaporte mohsen1


text:
Trying to install typescript@1.6.0-beta results in "invalid" package in npm ls -g output

Looking to try out the TS1.6 beta but having trouble installing it properly. Any ideas? I'm using node 0.12.7 installed through nvm.

i can see the same issue too. @DanielRosenwasser can you take a look.

What version of npm are you using? Try updating with npm install -g npm (if you're on Windows you might have to follow these instructions).

I was using 2.11.3. Problem solved by updating npm. Thanks.

For any future readers, this seems to have been caused by the fact that the version in our package.json was had a tag in the name (i.e. 1.6.0-dev.../1.6.0-beta). This was a regression and fixed in later versions of npm.

authors: DanielRosenwasser mhegazy sgronblo


text:
--save will not work if packages are already installed

Say I want to install a package and I run tsd install  angular
By mistake I forgot to use the --save flag.
If I try to re-run tsd install angular --save the tsd.json is not updated with install commits.
A user must delete installed angular package and then rerun tsd install angular --save for the installed package commits to appear inside tsd.json

Hi @matthewharwood, tsd isn't actually managed by the TypeScript team - it's managed by DefinitelyTyped. You can file an issue with them at https://github.com/DefinitelyTyped/tsd/issues/new

authors: DanielRosenwasser matthewharwood


text:
Union returntype with void must return a value

I have a method declared as stop(): void|Promise<void> {} which get the error

A function whose declared type is neither 'void' nor 'any' must return a value

As void is a valid return type I would expect that to be fully valid code. Specifying only void is working.

Proposing changing spec section 6.3

An explicitly typed function whose return type isn't the Void or the Any type must have at least one return statement somewhere in its body

to

An explicitly typed function whose return type isn't the Void type, the Any type, or a union type containing the Void or Any type as a member must have at least one return statement somewhere in its body

That still doesn't actually cover Promise<void> on its own though.

Not sure I understand the comment

The change you're proposing doesn't permit an async function whose return type annotation is Promise<void> to have no return statements.

I don't think anyone would want that behavior (@Pajn, care to weigh in?)

It would be nice if Promise didn't require a return statement in an async function. However for the issue I had the already proposed change would be enough.

Approved, accepting PRs. Should be easy.

@RyanCavanaugh Regarding:

An explicitly typed function whose return type isn't the Void type, the Any type, or a union type containing the Void or Any type as a constituent must have at least one return statement somewhere in its body

Isn't the emphasized part redundant? The following already compiles:
function f(): number | any {
}

I think that's an implementation side effect of the compiler. The spec doesn't specify that number | any is equivalent to the Any type, though.

authors: DanielRosenwasser Pajn RyanCavanaugh masaeedu


text:
Suggestion: Sum Types and Tagged Unions without Reflection

I’m very happy to see https://github.com/Microsoft/TypeScript/issues/186 close with pull request: https://github.com/Microsoft/TypeScript/pull/9163. This is a big step forward.
I read both of those and read Wes Wigham's recent work. I openned this as a new issue to avoid cluttering the closed issue.
Tagged Union without Reflection
I still think there is room to add some tagged-unions in the style of an FP language to TypeScript.  The benefits are widely understood and documented. The key attribute of this suggestion is the removal of visibility into the tag of the union. This is how every other statically-typed FP language implements them since they also erase types at run-time.
Hopefully this can become part of the language at some point in the future. Considering the recent code landing in 2.0, the urgency is greatly reduced, but still worth discussing.
A quick list of benefits:

The structure should be hidden for safety
The syntax and semantics are much more 1 to 1 with other languages
A new type gets created so we can support recursive definitions
It would provide a clean syntax for class destructuring in the future (with pattern matching after that)
The definitions are defined in one place and are not allowed to be extended. Any conditionals would be exhaustive and easy to see.

Proposed implementation:

Use the 'class system', with nominal typing by default
Add a new keyword to define these new types
It should work now with 'switch' statements

data Shape =
	| Square(size:number)
	| Rectangle(width:number, height:number)
	| Circle(radius: number)
	| Shapes(shapes:Shape[])
	;

Or an enum like type without associated values.
data StatusRegister =
	| Sign
	| Zero
	| F5
	| HalfCarry
	| F3
	| ParityOverflow
	| Subtract
	| Carry
	;

If ‘data’ is controversial as a keyword, then ‘datatype’ could be used.
I chose 'data' since the keyword 'type' is a type-synonym declaration in both Haskell and TypeScript.
Since Haskell uses 'data' to define new data types, I thought it best to keep that similarity.
Once these declarations are done, they are closed. So you see the entirety of the definition in a single place.
In terms of implementation, the Shape declaration would create a new type or class called Shape. Square, Circle, and Rectangle would be the subclasses. This is a common strategy for supporting the feature in OO languages. It was most notably used in Scala.
The Shape type above could be equivalent to.
interface Shape {};
class Square implements Shape {
    constructor(private size:number);
}
class Rectangle implements Shape {
    constructor(private width:number, private height:number);
}
class Circle implements Shape {
    constructor(private radius:number);
}
class Shapes implements Shape {
    constructor(private shapes:Shapes[]);
}

... or they could be defined as functions that construct that type.
The type guards would switch purely on the value vs. the ‘kind’.
No run-time reflection should be used.
function area(s: Shape) {
    switch (s) {
        case Square: return s.size * s.size;
        case Rectangle: return s.width * s.height;
        case Circle: return Math.PI * s.radius * s.radius;
        case Shapes: return union_rect(s.shapes);
    }
}

// Handling serialization and deserialization say from some Protobuf/Thrift type system
// Notice ordering may not correspond

function fromJSON(json:any):Shape {
    If (json.hasOwnProperty(‘kind’) === false) throw “Error”;

    switch (json.kind) {
        case 1: return Square(json.size);
        case 2: return Circle(json.radius);
        case 3: return Rectangle(json.width, json.height);
        case 4: return Shapes(json.shapes.map(el => fromJSON(el));
    }
}

function SRfromJSON(json:any):StatusRegister {
    If (json.hasOwnProperty(‘obType’) === false) throw “Error”;

    switch (json.obType) {
        case 1: return ParityOverflow;
        case 2: return Carry;
        case 3: return Zero;
        case 4: return HalfCarry;
        default: throw "Invalid json";
    }
}

Although destructuring is part of ES6, and it can work on a class instance, it uses structural typing.
If two objects have the same shape, the developer may want the guarantee of nominal matching for destructuring. This proposal would make that simple.
// Contrived example of same shape destructing with
// a contrived 'match' expression

data Vector2D =
| Vec2D(x: number, y:number)
| PosVec2D(x: number, y:number)  // Position Vector
;

function vecop_jj(v: Vector2D) {
    let res = match (v) {
        | PosVec2D: throw “Error - cannot mix position vectors with this operation”;
        | Vec2D(x, y): x - y;
    }
}

That is what I have so far. It might be interesting to consider pretty-printing or serialization, but I think the overall object system may determine the preferred implementation.
As a side note, I was thinking very hard about #186 2 weeks ago. I wanted to have a proposal for something this Monday. However, I was trying to unify all the possible cases (enums, string types, classes, and a new variant type). I couldn't come up with a clean solution.
When the recent code landed from Anders on Monday, it was great news. Wwe going to have something we can use very soon in 2.0. It also simplified the problem this suggestion was originally addressing.

I really like the type safety of this proposal. Much safer and better than switching on strings.

Just as an update, I have been reflecting on this problem some more.
It turns out that there are some problems with this technique that give me some pause.
The problem is that this can introduce a lot of 'boilerplate'
For example, lets say we used the above as the Node/AST for TypeScript. In order to traverse these trees, we would need to write code. Ditto for serialization and deserialization.
This is already happening in the TypeScript compiler with:  ts.forEachChild. The function is 371 lines long.
In the Haskell,OCaml, and Scala communities, the discussion about 'Boilerplate' has been going on for quite some time and continues to this day. This may be a really complicated problem!

Few remarks:

No to case Type: .... That visually conflicts with existing switch statements, and the semantics would depend on the types in a very opaque way. (Currently, I know of no statement type whose semantics depend on the type of any part of it.)

I like the idea of a special match statement, and think that should take the place of what you initially considered with the switch.

Nominal typing of that kind of thing may depend on #202.

Oh, and although I'm neutral, expect some resistance from others.

Hi - one more update.
Some interesting things have happened since I opened this issue.

C# 7.0 has shipped with pattern matching.
TypeScript 2.0 RC has shipped with Tagged Unions.

Given the above, I think compatibility will be important. Also, I think the larger community will gain experience and some new solutions will be proposed.
I think it makes sense at this point to close this issue. Thanks for reading.

I'll also mention that a limited form of pattern matching also exists with destructuring. It's not exactly conditional like true pattern matching, but it's a step in that direction.
(And tagged unions in 2.0 RC do technically check for completeness with the unreachable code path analysis, building on the 1.8 type narrowing. Things like this would result in a compiler warning:)
// Switch statement
function getValue(ref: One | Two | Three): number {
  switch (ref.type) {
  case "one": return 1
  case "two": return ref.number
  case "three": return 3
  default: return 4 // unreachable
  }
}

// If-else
function doSomething(ref: One | Two | Three) {
  if (ref.type === "three") {
    blah()
  } else {
    if (ref.type !== "two") return
    baz()
    if (ref.type === "one") {
      doSomethingElse() // unreachable
    }
  }
}

interface One { type: "one" }
interface Two { type: "two"; value: number }
interface Three { type: "three" }

authors: bluemmc drudru isiahmeadows


text:
i don't have an ipv4 and network manger is nor running

This bug-tracker is monitored by developers and other technical types.  We like detail!  So please use this form and tell us, concisely but precisely, what's up.  Please fill out ALL THE FIELDS!
If you have a feature request, please post to the UserVoice.
If this is a console issue (a problem with layout, rendering, colors, etc.), please post to the console issue tracker.
Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues.  Instead, send dumps/traces to secure@microsoft.com, referencing the GitHub bug number. Ideally, please configure your machine to capture minidumps, repro the issue, and send the minidump from "C:\Windows\minidump".

Your Windows build number:  (Type ver at a Windows Command Prompt)

What you're doing and what's happening:  (Copy&paste specific commands and their output, or include screen shots)

What's wrong / what should be happening instead:

Strace of the failing command, if applicable:  (If some_command is failing, then run strace -o some_command.strace -f some_command some_args, and link the contents of some_command.strace in a gist here)

See our contributing instructions for assistance.

@22hamoda22 - There is not enough information in this report to make it actionable. You have copy/pasted the contributing instructions, but, haven't filled them out. Mind doing that?
Is networking not working for you? As for the network manager service, that is the expected behavior as per the design. But, that should not block network access.

repo: Microsoft/WSL


text:
unrecognised selector when defined in category

W/Objective-C: -[_NSCFString JSONValue]: unrecognized selector in signature lookup.
E/WIL: C:\workspace\Windows\winobjc\Frameworks\Foundation\NSObject.mm(384)(null)!0F9EED20: (caller: 0F9EEBAA) Objective-C Exception(1) tid(502c) 80070490 Element not found.
Msg:[-[_NSCFString JSONValue]: unrecognized selector sent to instance 110E4760.] [_throwUnrecognizedSelectorException(HRESULT_FROM_WIN32(ERROR_NOT_FOUND))]

    NSString* json = [NSString stringWithContentsOfFile:aFileName encoding:NSUTF8StringEncoding error:nil];
    id o = [json JSONValue];

The definition and declaration are in the statically linked library

@interface NSString (NSString_SBJSON)
- (id)JSONFragmentValue;
- (id)JSONValue;
@end

@implementation NSString (NSString_SBJSON)

(id)JSONFragmentValue
{
SBJsonParser *jsonParser = [SBJsonParser new];
id repr = [jsonParser fragmentWithString:self];
if (!repr)
NSLog(@"-JSONFragmentValue failed. Error trace is: %@", [jsonParser errorTrace]);
[jsonParser release];
return repr;
}

(id)JSONValue
{
SBJsonParser *jsonParser = [SBJsonParser new];
id repr = [jsonParser objectWithString:self];
if (!repr)
NSLog(@"-JSONValue failed. Error trace is: %@", [jsonParser errorTrace]);
[jsonParser release];
return repr;
}

@end

NSString is typically a class cluster, returning private classes from its constructors. Try this:
NSLog(@"json: %@", json);
and see the type of your receiver (which according to your error is an instance of _NSCFString).
i.e.: Don't use categories on a class cluster.
Sincerely,
Ed

I'm very sorry but this suggestion would break most of the several years perfectly working code on iOS. This bridge is supposed to be compatible with object C runtime and NOT the other way around. You suggestion denies the purpose of the whole thing.
Moreover there's many class clusters in objective C and almost all of them have categories even in the SDK itself.
So I don't see this even as a workaround let alone a "fix" that should be done in the source code/
The actual instance type is whatever the runtime instantiates when calling [[NSString alloc] intxxx] the fact that it's  _NSCFString and therefore it doesn't see category on NSString is clearly the objective C runtime problem and it clearly makes your this bridge not compatible in one of the most crucial and useful features of objective C.
Regards
P

This is a dupe of #236. I just updated #236 with a workaround.  Hope that helps.

authors: edvv rajsesh-msft spalda2

repo: Microsoft/WinObjC


text:
error CS0433: The type 'System.Threading.ThreadLocal' in packaging branch

This seems to be caused by the redgate readyroll extension.
150>------ Rebuild All started: Project: BuildFinalizer, Configuration: Debug ARM ------
150>E:\src\WinObjC\common\winobjc.nuproj.common.targets(180,5): error : The source file for this compilation can be found at: "C:\Users\rajsesh\AppData\Local\Temp\c5f62782-3fb0-435f-b95c-ff56b9528ffb.txt"
150>E:\src\WinObjC\common\winobjc.nuproj.common.targets(180,5): error MSB3758: An error has occurred during compilation. warning CS1685: The predefined type 'System.Threading.Tasks.Task' is defined in multiple assemblies in the global alias; using definition from 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll'
150>E:\src\WinObjC\common\winobjc.nuproj.common.targets(180,5): error MSB3758: An error has occurred during compilation. warning CS1685: The predefined type 'System.Threading.Tasks.Task' is defined in multiple assemblies in the global alias; using definition from 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll'
150>E:\src\WinObjC\common\winobjc.nuproj.common.targets(180,5): error MSB3758: An error has occurred during compilation. c:\Users\rajsesh\AppData\Local\Temp\lsjlkqsu.0.cs(10,22) : error CS0433: The type 'System.Threading.ThreadLocal<T>' exists in both 'c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\5mn5jwtd.qae\System.Threading.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll'
150>E:\src\WinObjC\common\winobjc.nuproj.common.targets(180,5): error MSB4036: The "LockGitVersion" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with <UsingTask> in the project file, or in the *.tasks files located in the "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin" directory.
150>Done building project "WinObjC.Frameworks.Core.nuproj" -- FAILED.

@bbowman removing the "ReadyRoll" extension resolved it.


text:
Add important note about backup needs

Azure Storage maintains 3 copies of every Azure VM disk to guarantee protection against data loss or physical data corruption. Thus, unlike on-premises, you don't need to worry about these. However, you should still backup your SQL Server databases to protect against application or user errors (e.g inserting wrong data or deleting a table) and being able to restore to a point in time.

@luisherring,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@luisherring : Thanks for your contribution to the Azure documentation! The author, @rothja, has been notified to review your proposed change.

#sign-off

authors: PRmerger luisherring msftclas rothja

repo: Microsoft/azure-docs


text:
Add VLAN details

Added details to ensure the VLAN ID is the same across all equipment in the peering connection. I think I have it worded clearly enough, but if there is feedback on how to make it clearer I welcome suggestions.

@jboeshart,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@jboeshart : Thanks for your contribution to the Azure documentation! The author, @cherylmc, has been notified to review your proposed change.

@ganesr - Can you please review this?

@jboeshart STAGs are not exposed to customers. We do not want to refer to them in our docs.

I literally copied that from another Azure doc, but if we just want to refer to the CTAG (which is what my particular customer had an issue with) I can remove the STAG from this document and from the other as well. Let me know if that's what you'd prefer.

@ganesr, what do you want done with the STAG piece? We have it present in other documentation, so if we want to remove it I can remove it from the other docs.

@jboeshart I don't think we document STAG details for our customers. This information is specific to our partners. The only place where we talk about STAGs is in the sample config. if customers need it.

Ok, I'll remove it from this PR and from the other documentation.

#please-close

Sorry, hadn't had an opportunity to update this @cherylmc , was this closed due to delay (on my end) or because there are other objections to these updates?

@jboeshart I'm doing updates to this article this week. I've sent mail to Ganesh asking if these changes should be merged in. We're on track for a giant merge conflict if we both try to merge our changes in, so I'll hold off and wait to hear from Ganesh.

Sounds good, thanks @cherylmc

authors: PRmerger cherylmc ganesr jboeshart msftclas


text:
report deploy failure when war deploy failed after three times trying

fix issue #233

Codecov Report

Merging #255 into develop will decrease coverage by 0.06%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           develop    #255      +/-   ##
==========================================
- Coverage    55.87%   55.8%   -0.07%
==========================================
  Files           53      53
  Lines         1668    1670       +2
  Branches       188     189       +1
==========================================
  Hits           932     932
- Misses         673     675       +2
  Partials        63      63

Impacted Files
Coverage Δ

.../maven/webapp/handlers/WarArtifactHandlerImpl.java
0% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6f8704e...6ac1a77. Read the comment docs.

authors: SummerSun codecov-io

repo: Microsoft/azure-maven-plugins


text:
Issue with compilers with Python 2.7 and 3.4

When using:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: 2.7

or
  - task: UsePythonVersion@0
    inputs:
      versionSpec: 3.4

I get errors regarding missing C++ compilers when trying to install Python packages with C extensions. An example configuration for installing a package is
  - script: pip install numpy --no-binary :all:
    displayName: Installing numpy

The error is:
...
    creating build
    creating build\lib.win-amd64-2.7
    creating build\lib.win-amd64-2.7\fast_histogram
    copying fast_histogram\histogram.py -> build\lib.win-amd64-2.7\fast_histogram
    copying fast_histogram\__init__.py -> build\lib.win-amd64-2.7\fast_histogram
    creating build\lib.win-amd64-2.7\fast_histogram\tests
    copying fast_histogram\tests\test_histogram.py -> build\lib.win-amd64-2.7\fast_histogram\tests
    copying fast_histogram\tests\__init__.py -> build\lib.win-amd64-2.7\fast_histogram\tests
    running build_ext
    building 'fast_histogram._histogram_core' extension
    error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27

for Python 2.7 and:
...
    creating build
    creating build\src.win-amd64-3.4
    creating build\src.win-amd64-3.4\numpy
    creating build\src.win-amd64-3.4\numpy\distutils
    building library "npymath" sources
    error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).

for Python 3.4.
I feel that this should probably work out of the box as part of the usePythonVersion task, or at least that there should be information on how to get this to work (maybe an 'inputs' option to the usePythonVersion task)

Those are some rather old C++ compiler versions, so they aren't installed on the hosted build VMs.  If you need them, you should be able to install them as part of the build.
Python packages can run arbitrary build steps, so the task can't anticipate all the dependencies you would need to build a package from source (sdist).
May I ask why you need to use --no-binary?  The precompiled wheel for numpy won't have this problem.

@brcrista - I was using --no-binary to demonstrate the issue in a minimal way, but my actual use case is that I am trying to actually build wheels for some of my packages on Azure.
What is the best way to install these compilers?

Ah, got it 😊
3.4 is really old; most libraries have already dropped support.  If you really want to build with it, I would recommend running a self-hosted build agent.  Then you can install whatever software you need.
For 2.7, you can choco install vcpython27

It would be really nice if vcpython27 were installed by default.  It should mostly stay out of the way of the other compilers

I think you're right @asottile.  I discussed this with @vtbassmatt and we agreed it should probably be there by default.

Opened https://github.com/Microsoft/azure-pipelines-image-generation/issues/793 to track this

authors: asottile astrofrog brcrista

repo: Microsoft/azure-pipelines-tasks


text:
Color Themes not setting all properties correctly

Issue Type: Feature Request
Color themes don't set the database connection dropdown selectors correctly. In Dark modes they are always dark text on a dark background making it hard to see.

Azure Data Studio version: azuredatastudio 1.6.0 (eb35dae1d1238e03f1cab3bd45e151f381b22aef, 2019-04-17T07:11:15.944Z)
OS version: Windows_NT x64 10.0.16299

This looks like a duplicate of #4741.  We will fix in the next release.

repo: Microsoft/azuredatastudio


text:
[declarative-hack] LG in retryPrompt is sticky (doesn't shuffle through generations)

Github issues should be used for bugs and feature requests. Use Stack Overflow for general "how-to" questions.
Version
Hackaton prebuild
Describe the bug
Using declarative form, when using LG [name] in activity, all is well. When using the same [name] in "retryPrompt": "[name]", it doesn't shuffle through LG entries.
To Reproduce
Steps to reproduce the behavior:
Use declarative dev, place an LG [token] in retryPrompt, run, try to see one of the alternates. The first one that comes up is sticky during the retry.
Expected behavior
Give a clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
[bug]

Ok. I was able to get to the bottom of this. The issue here is that although user specifies an LG template to 'retryPrompt' it is never called multiple times because the initial prompt is initialized with the retry string (LG called at that point) and is not called on every single retry. We possibly need to address this via the reprompt .vs. continue discussion via #1682
var prompt = await Prompt.BindToData(dc.Context, dc.State).ConfigureAwait(false);
var retryPrompt = RetryPrompt == null ? prompt : await RetryPrompt.BindToData(dc.Context, dc.State).ConfigureAwait(false);

return await dc.PromptAsync(this.prompt.Id, new PromptOptions() { Prompt = prompt, RetryPrompt = retryPrompt }, cancellationToken).ConfigureAwait(false);

@yochay

This is related to the reprompt re-work. Punting to post //build.

@luhan2017 , this should be fixed via the input work. Can you please verify and close?

authors: scheyal vishwacsena

repo: Microsoft/botbuilder-dotnet


text:
[Adaptive] IfCondition does not work in a Rule unless there is a step after the IfCondition step

Here's the snippet that does not work.
User: hi
Bot: what is your name?
User: cancel
Bot: Are you sure?
User: yes
Bot: what is your name? -> Bot should have cancelled the conversation and ended the dialog.
You can see that IfCondition step works in the sample below if you uncomment this line -                             // new SendActivity("Test")
            var rootDialog = new AdaptiveDialog(nameof(AdaptiveDialog))
            {
                Steps = new List<IDialog>()
                {
                    new TextInput()
                    {
                        Property = "user.name",
                        Prompt = new ActivityTemplate("what is your name?")
                    },
                    new SendActivity("Hello, {user.name}")
                },
                Rules = new List<IRule>()
                {
                    new IntentRule("Cancel")
                    {
                        Steps = new List<IDialog>()
                        {
                            new ConfirmInput()
                            {
                                Property = "turn.addTodo.cancelConfirmation",
                                Prompt = new ActivityTemplate("[Confirm-cancellation]")
                            },
                            new IfCondition()
                            {
                                Condition = new ExpressionEngine().Parse("turn.addTodo.cancelConfirmation == true"),
                                Steps = new List<IDialog>()
                                {
                                    new SendActivity("Cancelling add todo..."),
                                    new EndDialog()
                                },
                                ElseSteps = new List<IDialog>()
                                {
                                    new SendActivity("Sure, no problem..")
                                }
                                // We do not need to specify an else block here since if user said no,
                                // the control flow will automatically return to the last active step (if any)
                            },
                            // new SendActivity("Test")
                        }
                    }
                },
                Recognizer = new RegexRecognizer()
                {
                    Intents = new Dictionary<string, string>()
                    {
                        { "Help", "(?i)help" },
                        { "Cancel", "(?i)cancel" }
                    }
                }
            };

@stevenic , here this case set up as a unit test in C#

        [TestMethod]
        public async Task IfCondition_EndDialog()
        {
            var testDialog = new AdaptiveDialog(nameof(AdaptiveDialog))
            {
                Steps = new List<IDialog>()
                {
                    new TextInput()
                    {
                        Property = "user.name",
                        Prompt = new ActivityTemplate("name?")
                    },
                    new SendActivity("Hello, {user.name}")
                },
                Rules = new List<IRule>()
                {
                    new IntentRule("CancelIntent")
                    {
                        Steps = new List<IDialog>()
                        {
                            new ConfirmInput()
                            {
                                Property = "conversation.addTodo.cancelConfirmation",
                                Prompt = new ActivityTemplate("cancel?")
                            },
                            new IfCondition()
                            {
                                Condition = new ExpressionEngine().Parse("conversation.addTodo.cancelConfirmation == true"),
                                Steps = new List<IDialog>()
                                {
                                    new DebugBreak(),
                                    new SendActivity("canceling"),
                                    new EndDialog()
                                },
                                ElseSteps = new List<IDialog>()
                                {
                                    new SendActivity("notcanceling")
                                }
                                // We do not need to specify an else block here since if user said no,
                                // the control flow will automatically return to the last active step (if any)
                            },
                            // new SendActivity("Test")
                        }
                    }
                },
                Recognizer = new RegexRecognizer()
                {
                    Intents = new Dictionary<string, string>()
                    {
                        { "HelpIntent", "(?i)help" },
                        { "CancelIntent", "(?i)cancel" }
                    }
                }
            };

            await CreateFlow(testDialog)
                .Send("hi")
                    .AssertReply("name?")
                .Send("cancel")
                    .AssertReply("cancel?")
                .Send("yes")
                    .AssertReply("canceling")
                .StartTestAsync();
        }

PR is https://github.com/Microsoft/botbuilder-dotnet/pull/1818

Continues to be an issue with the latest code in 4.future branch.
To repro - try this -

get set up with this sample (follow readme instructions)
Run the bot
Say - add todo
Then click on cancel button
Click on yes to confirm cancellation.
Verify bot cancelled the dialog

Step 6 wouldnt be run if you removed this step right after the IfCondition step.
                {
                    "$type": "Microsoft.SendActivity",
                    "activity": "Handled cancel."
                }

And any changes to state is lost right after the rule that holds the IfCondition

no repo with latest packages

authors: tomlm vishwacsena


text:
patch new luis over old merged luis that was renamed

merge deleted and added file so new changes were dropped.
This restores them

Pull Request Test Coverage Report for Build 744

11 of 298 (3.69%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-6.02%) to 70.389%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

packages/LUIS/bin/luis.js
11
298
3.69%

Totals

Change from base Build 742:
-6.02%

Covered Lines:
3630

Relevant Lines:
4923

💛  - Coveralls

authors: coveralls tomlm

repo: Microsoft/botbuilder-tools


text:
RYUJit compiler in 4.6

@conniey @HollyAM

Sorry, @conniey. I have no idea how I came up with what was clearly a duplicate ID. I've corrected it.

repo: Microsoft/dotnet


text:
[website] turn headers into hyperlinks

There are already hyperlinks in the specification:
https://microsoft.github.io/language-server-protocol/specification#textDocument_formatting
But it is not possible to copy them. I have to open the dev tool and copy it from there.

I'd love to take a look at this :)

authors: akosyakov lewiscowper

repo: Microsoft/language-server-protocol