Chakra failed to build with MSVC + permissive- on windows
#4,902 opened on 2018年3月29日
Repository metrics
- Stars
- (9,000 stars)
- PR merge metrics
- (30d に merged PR はありません)
説明
Chakra failed with error C3861 when build with permissive- on Windows, I use latest source on master branch. Could you please help take a look at this? Noted that this issue only found when compiles with unreleased vctoolset, that next release of MSVC will have this behavior. You can repro this issue as the steps below:
- git clone -c core.autocrlf=true https://github.com/microsoft/ChakraCore D:\Chakra\src
- Open a clean x86 prompt and browse to D:\Chakra\src
- set CL=-wd4471 /permissive-
- msbuild /m /p:Platform=x86 /p:Configuration=Test /p:WindowsTargetPlatformVersion=10.0.16299.0 Build\Chakra.Core.sln /t:Rebuild
Failure like:
"D:\Chakra\src\Build\Chakra.Core.sln" (Rebuild target) (1) -> "D:\Chakra\src\Build..\bin\ChakraCore\ChakraCore.vcxproj.metaproj" (Rebuild target) (2) -> "D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj" (Rebuild target) (6) -> d:\chakra\src\lib\common\datastructures\basedictionary.h(1452,33): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1452,33): error C3861: return __super::Add(ValueToKey<TKey, TElement>::ToKey(element), element); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1452,33): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1458,36): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1458,36): error C3861: return __super::AddNew(ValueToKey<TKey, TElement>::ToKey(element), element); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1458,36): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1463,34): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1463,34): error C3861: return __super::Item(ValueToKey<TKey, TElement>::ToKey(element), element); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1463,34): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1491,32): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1491,32): error C3861: return ContainsKey(ValueToKey<TKey, TElement>::ToKey(element)); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1491,32): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1505,36): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1505,36): error C3861: return __super::Remove(ValueToKey<TKey, TElement>::ToKey(element)); [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj] d:\chakra\src\lib\common\datastructures\basedictionary.h(1505,36): error C3861: ^ [D:\Chakra\src\lib\Common\Exceptions\Chakra.Common.Exceptions.vcxproj]
"D:\Chakra\src\Build\Chakra.Core.sln" (Rebuild target) (1) -> "D:\Chakra\src\Build..\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj.metaproj" (Rebuild target) (10) -> "D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj" (Rebuild target) (11) -> d:\chakra\src\lib\common\datastructures\dictionaryentry.h(85,17): error C3861: 'ClearValue': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(85,17): error C3861: ClearValue::Clear(&this->value); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(85,17): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(98,39): error C3861: 'ValueToKey': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(98,39): error C3861: TKey Key() const { return ValueToKey<TKey, TValue>::ToKey(this->value); } [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\dictionaryentry.h(98,39): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\smallheapblockallocator.h(72,51): error C2039: 'IsConcurrentSweepState': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\smallheapblockallocator.h(72,51): error C2039: return IsFreeListAllocMode() && recycler->IsConcurrentSweepState(); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\smallheapblockallocator.h(72,51): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(90,33): error C2039: 'CreateWeakReferenceHandle': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(90,33): error C2039: weakRef = recycler->CreateWeakReferenceHandle((T*)this); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(90,33): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(355,47): error C2039: 'FindHeapBlock': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(355,47): error C2039: entry->strongRefHeapBlock = recycler->FindHeapBlock(strongReference); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(355,47): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(358,50): error C2039: 'FindHeapBlock': is not a member of 'Memory::Recycler' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(358,50): error C2039: HeapBlock * weakRefHeapBlock = recycler->FindHeapBlock(entry); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\memory\recyclerweakreference.h(358,50): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(232,20): error C3861: 'values': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(232,20): error C3861: return values[i]; [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(232,20): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(239,20): error C3861: 'values': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(239,20): error C3861: return values[i]; [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\common\datastructures\weakreferencedictionary.h(239,20): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C2065: 'ULongMult': undeclared identifier [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C2065: if (FAILED(ULongMult(m_cchMax, sizeof(OLECHAR) * 2, &cbNew))) [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C2065: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C3861: 'ULongMult': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C3861: if (FAILED(ULongMult(m_cchMax, sizeof(OLECHAR) * 2, &cbNew))) [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\parser\scan.h(670,17): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(139,18): error C2039: 'GetPropertyRecord': is not a member of 'Js::JavascriptString' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(139,18): error C2039: str->GetPropertyRecord(&propRecord); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(139,18): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,36): error C2039: 'GetString': is not a member of 'Js::JavascriptString' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,36): error C2039: return Equals(str->GetString(), str->GetLength()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,36): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,54): error C2039: 'GetLength': is not a member of 'Js::JavascriptString' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,54): error C2039: return Equals(str->GetString(), str->GetLength()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\propertyrecord.h(143,54): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\crosssite.h(29,41): error C3861: 'CrossSiteObject': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\crosssite.h(29,41): error C3861: BOOL ret = VirtualTableInfo<CrossSiteObject>::HasVirtualTable(obj); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\crosssite.h(29,41): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,62): error C2039: 'GetLibrary': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,62): error C2039: *propertyValue = IsMissing ? requestContext->GetLibrary()->GetFalse() : requestContext->GetLibrary()->GetTrue(); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,62): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,105): error C2039: 'GetLibrary': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,105): error C2039: *propertyValue = IsMissing ? requestContext->GetLibrary()->GetFalse() : requestContext->GetLibrary()->GetTrue(); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\inlinecache.h(412,105): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\functionbody.h(3470,20): error C3861: 'GetSlot': identifier not found [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\functionbody.h(3470,20): error C3861: fn(GetSlot[i]); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\base\functionbody.h(3470,20): error C3861: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\prototypechaincache.h(197,28): error C2039: 'InvalidateStoreFieldCaches': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\prototypechaincache.h(197,28): error C2039: scriptContext->InvalidateStoreFieldCaches(propertyId); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\language\prototypechaincache.h(197,28): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(66,28): error C2039: 'FindPropertyRecord': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(66,28): error C2039: scriptContext->FindPropertyRecord(value, N - 1, &propertyRecord); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(66,28): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(69,35): error C2039: 'GetPropertyString': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(69,35): error C2039: return scriptContext->GetPropertyString(propertyRecord->GetPropertyId()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(69,35): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(73,120): error C2039: 'GetRecycler': is not a member of 'Js::ScriptContext' [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(73,120): error C2039: return LiteralString::New(stringTypeStatic, value, N - 1 /don't include terminating NUL/, scriptContext->GetRecycler()); [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj] d:\chakra\src\lib\runtime\library\stringcache.h(73,120): error C2039: ^ [D:\Chakra\src\lib\Runtime\ByteCode\Chakra.Runtime.ByteCode.vcxproj]