未验证 提交 b706a2f3 编写于 作者: D Don Syme 提交者: GitHub

tp exn messages (#9009)

上级 ce10b794
......@@ -38,8 +38,17 @@ module internal ExtensionTyping =
let GetTypeProviderImplementationTypes (runTimeAssemblyFileName, designTimeAssemblyNameString, m:range, compilerToolPaths:string list) =
// Report an error, blaming the particular type provider component
let raiseError (e: exn) =
raise (TypeProviderError(FSComp.SR.etProviderHasWrongDesignerAssembly(typeof<TypeProviderAssemblyAttribute>.Name, designTimeAssemblyNameString, e.Message), runTimeAssemblyFileName, m))
let raiseError designTimeAssemblyPathOpt (e: exn) =
let attrName = typeof<TypeProviderAssemblyAttribute>.Name
let exnTypeName = e.GetType().FullName
let exnMsg = e.Message
match designTimeAssemblyPathOpt with
| None ->
let msg = FSComp.SR.etProviderHasWrongDesignerAssemblyNoPath(attrName, designTimeAssemblyNameString, exnTypeName, exnMsg)
raise (TypeProviderError(msg, runTimeAssemblyFileName, m))
| Some designTimeAssemblyPath ->
let msg = FSComp.SR.etProviderHasWrongDesignerAssembly(attrName, designTimeAssemblyNameString, designTimeAssemblyPath, exnTypeName, exnMsg)
raise (TypeProviderError(msg, runTimeAssemblyFileName, m))
let designTimeAssemblyOpt = getTypeProviderAssembly (runTimeAssemblyFileName, designTimeAssemblyNameString, compilerToolPaths, raiseError)
......@@ -54,7 +63,17 @@ module internal ExtensionTyping =
yield t ]
filtered
with e ->
raiseError e
let folder = System.IO.Path.GetDirectoryName loadedDesignTimeAssembly.Location
let exnTypeName = e.GetType().FullName
let exnMsg = e.Message
match e with
| :? System.IO.FileLoadException ->
let msg = FSComp.SR.etProviderHasDesignerAssemblyDependency(designTimeAssemblyNameString, folder, exnTypeName, exnMsg)
raise (TypeProviderError(msg, runTimeAssemblyFileName, m))
| _ ->
let msg = FSComp.SR.etProviderHasDesignerAssemblyException(designTimeAssemblyNameString, folder, exnTypeName, exnMsg)
raise (TypeProviderError(msg, runTimeAssemblyFileName, m))
| None -> []
let StripException (e: exn) =
......
......@@ -1178,7 +1178,8 @@ fscTooManyErrors,"Exiting - too many errors"
3028,etProvidedTypeHasUnexpectedName,"Expected provided type named '%s' but provided type has 'Name' with value '%s'"
3029,etEventNoAdd,"Event '%s' on provided type '%s' has no value from GetAddMethod()"
3030,etEventNoRemove,"Event '%s' on provided type '%s' has no value from GetRemoveMethod()"
3031,etProviderHasWrongDesignerAssembly,"Assembly attribute '%s' refers to a designer assembly '%s' which cannot be loaded or doesn't exist. %s"
3031,etProviderHasWrongDesignerAssemblyNoPath,"Assembly attribute '%s' refers to a designer assembly '%s' which cannot be loaded or doesn't exist. The exception reported was: %s - %s"
3031,etProviderHasWrongDesignerAssembly,"Assembly attribute '%s' refers to a designer assembly '%s' which cannot be loaded from path '%s'. The exception reported was: %s - %s"
3032,etProviderDoesNotHaveValidConstructor,"The type provider does not have a valid constructor. A constructor taking either no arguments or one argument of type 'TypeProviderConfig' was expected."
3033,etProviderError,"The type provider '%s' reported an error: %s"
3034,etIncorrectParameterExpression,"The type provider '%s' used an invalid parameter in the ParameterExpression: %s"
......@@ -1192,6 +1193,8 @@ fscTooManyErrors,"Exiting - too many errors"
3045,etInvalidStaticArgument,"Invalid static argument to provided type. Expected an argument of kind '%s'."
3046,etErrorApplyingStaticArgumentsToType,"An error occured applying the static arguments to a provided type"
3047,etUnknownStaticArgumentKind,"Unknown static argument kind '%s' when resolving a reference to a provided type or method '%s'"
3048,etProviderHasDesignerAssemblyDependency,"The type provider designer assembly '%s' could not be loaded from folder '%s' because a dependency was missing or could not loaded. All dependencies of the type provider designer assembly must be located in the same folder as that assembly. The exception reported was: %s - %s"
3049,etProviderHasDesignerAssemblyException,"The type provider designer assembly '%s' could not be loaded from folder '%s'. The exception reported was: %s - %s"
invalidNamespaceForProvidedType,"invalid namespace for provided type"
invalidFullNameForProvidedType,"invalid full name for provided type"
#3050,etGenerateAttributeRequiresInternal,"The 'Generate' attribute must be used with a type definition with 'internal' visibility"
......
......@@ -298,7 +298,7 @@ module internal FSharpEnvironment =
try
Some (Assembly.UnsafeLoadFrom designTimeAssemblyPath)
with e ->
raiseError e
raiseError (Some designTimeAssemblyPath) e
let rec searchParentDirChain path assemblyName =
seq {
......@@ -345,7 +345,7 @@ module internal FSharpEnvironment =
let name = AssemblyName designTimeAssemblyName
Some (Assembly.Load (name))
with e ->
raiseError e
raiseError None e
let getCompilerToolsDesignTimeAssemblyPaths compilerToolPaths =
searchToolPaths None compilerToolPaths
providerAttributeErrorConsume.fsx(1,1,1,48): parse error FS3031: The type provider '<ASSEMBLY>' reported an error: Assembly attribute 'TypeProviderAssemblyAttribute' refers to a designer assembly 'Invalid.Assembly.Name' which cannot be loaded or doesn't exist. Could not load file or assembly '<URIPATH>Invalid.Assembly.Name.dll' or one of its dependencies. The system cannot find the file specified.
providerAttributeErrorConsume.fsx(1,1,1,48): parse error FS3031: The type provider '<ASSEMBLY>' reported an error: Assembly attribute 'TypeProviderAssemblyAttribute' refers to a designer assembly 'Invalid.Assembly.Name' which cannot be loaded or doesn't exist. The exception reported was: Could not load file or assembly '<URIPATH>Invalid.Assembly.Name.dll' or one of its dependencies. The system cannot find the file specified.
providerAttributeErrorConsume.fsx(1,1,1,48): parse error FS3005: Referenced assembly '<ASSEMBLY>' has assembly level attribute 'Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute' but no public type provider classes were found
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册