Skip to content

Commit

Permalink
Merge branch 'main' into provided-types-update
Browse files Browse the repository at this point in the history
  • Loading branch information
Thorium committed Nov 15, 2023
2 parents 15c7606 + 69dfe0e commit 7792f38
Show file tree
Hide file tree
Showing 12 changed files with 45 additions and 42 deletions.
Expand Up @@ -20,7 +20,7 @@ let init () =
if not initialized then
initialized <- true

if WebRequest.DefaultWebProxy <> null then
if not (isNull WebRequest.DefaultWebProxy) then
WebRequest.DefaultWebProxy.Credentials <- CredentialCache.DefaultNetworkCredentials

ProvidedTypes.ProvidedTypeDefinition.Logger
Expand Down
Expand Up @@ -80,6 +80,7 @@ module internal ReflectionHelpers =
type DisposableTypeProviderForNamespaces(config, ?assemblyReplacementMap) as x =
inherit TypeProviderForNamespaces(config, ?assemblyReplacementMap = assemblyReplacementMap)

let lockObj = Object()
let disposeActions = ResizeArray()

static let mutable idCount = 0
Expand All @@ -90,7 +91,7 @@ type DisposableTypeProviderForNamespaces(config, ?assemblyReplacementMap) as x =
do idCount <- idCount + 1

let dispose typeNameOpt =
lock disposeActions (fun () ->
lock lockObj (fun () ->
for i = disposeActions.Count - 1 downto 0 do
let disposeAction = disposeActions.[i]
let discard = disposeAction typeNameOpt
Expand All @@ -115,7 +116,7 @@ type DisposableTypeProviderForNamespaces(config, ?assemblyReplacementMap) as x =
| _ -> None)

member _.AddDisposeAction action =
lock disposeActions (fun () -> disposeActions.Add action)
lock lockObj (fun () -> disposeActions.Add action)

member _.InvalidateOneType typeName =
(use _holder = logTime "InvalidateOneType" (sprintf "%s in %O [%d]" typeName x id)
Expand Down Expand Up @@ -296,7 +297,7 @@ module internal ProviderHelpers =
while max > 0 do
let line = reader.ReadLine()

if line = null then
if isNull line then
max <- 0
else
line |> sb.AppendLine |> ignore
Expand Down
@@ -1,4 +1,4 @@
// Copyright 2011-2015, Tomas Petricek (http://tomasp.net), Gustavo Guerra (http://functionalflow.co.uk), and other contributors
// Copyright 2011-2015, Tomas Petricek (http://tomasp.net), Gustavo Guerra (http://functionalflow.co.uk), and other contributors
// Licensed under the Apache License, Version 2.0, see LICENSE.md in this project
//
// Utilities for building F# quotations without quotation literals
Expand Down Expand Up @@ -61,7 +61,7 @@ let (?) (typ: Type) (operation: string) (args1: 'T) (args2: 'U) : Expr =
match typ.GetMember(operation, MemberTypes.All, flags) with
| [| :? MethodInfo as mi |] ->
let mi =
if tyargs = [] then
if List.isEmpty tyargs then
mi
else
mi.MakeGenericMethod(tyargs |> Array.ofList)
Expand Down
2 changes: 1 addition & 1 deletion src/FSharp.Data.Html.Core/HtmlOperations.fs
Expand Up @@ -326,7 +326,7 @@ module HtmlNode =
let rec selectElements' level acc source =

// if we already have an empty list, terminate early
if acc = [] then
if List.isEmpty acc then
[]
else

Expand Down
5 changes: 1 addition & 4 deletions src/FSharp.Data.Html.Core/HtmlRuntime.fs
Expand Up @@ -267,10 +267,7 @@ module HtmlRuntime =

let rowLengths =
cells
|> List.map (fun row ->
row
|> List.map (fun (_, col) -> colSpan col)
|> List.fold (+) 0)
|> List.map (fun row -> row |> List.sumBy (snd >> colSpan))

let numberOfColumns = List.max rowLengths

Expand Down
16 changes: 8 additions & 8 deletions src/FSharp.Data.Http/Http.fs
Expand Up @@ -1620,7 +1620,7 @@ module internal HttpHelpers =

let runningOnMono =
try
System.Type.GetType("Mono.Runtime") <> null
not (isNull (System.Type.GetType "Mono.Runtime"))
with e ->
false

Expand All @@ -1637,7 +1637,7 @@ module internal HttpHelpers =
let remoteStackTraceString =
typeof<exn>.GetField ("_remoteStackTraceString", BindingFlags.Instance ||| BindingFlags.NonPublic)

if remoteStackTraceString <> null then
if not (isNull remoteStackTraceString) then
remoteStackTraceString.SetValue(e, e.StackTrace + Environment.NewLine)
with _ ->
()
Expand All @@ -1651,7 +1651,7 @@ module internal HttpHelpers =
with
// If an exception happens, augment the message with the response
| :? WebException as exn ->
if exn.Response = null then reraisePreserveStackTrace exn
if isNull exn.Response then reraisePreserveStackTrace exn

let responseExn =
try
Expand Down Expand Up @@ -1749,12 +1749,12 @@ module internal HttpHelpers =
| "pragma" -> req.Headers.[HeaderEnum.Pragma] <- value
| "range" ->
if not (value.StartsWith("bytes=")) then
failwith "Invalid value for the Range header"
failwithf "Invalid value for the Range header (%O)" value

let bytes = value.Substring("bytes=".Length).Split('-')

if bytes.Length <> 2 then
failwith "Invalid value for the Range header"
failwithf "Invalid value for the Range header (%O)" bytes

req.AddRange(int64 bytes.[0], int64 bytes.[1])
| "proxy-authorization" -> req.Headers.[HeaderEnum.ProxyAuthorization] <- value
Expand Down Expand Up @@ -1803,7 +1803,7 @@ module internal HttpHelpers =
try
return! getResponseAsync req
with :? WebException as exc ->
if exc.Response <> null then
if not (isNull exc.Response) then
return exc.Response
else
reraisePreserveStackTrace exc
Expand Down Expand Up @@ -2164,7 +2164,7 @@ type Http private () =
(defaultArg silentCookieErrors false)

let contentType =
if resp.ContentType = null then
if isNull resp.ContentType then
"application/octet-stream"
else
resp.ContentType
Expand All @@ -2174,7 +2174,7 @@ type Http private () =
| :? HttpWebResponse as resp -> int resp.StatusCode, resp.CharacterSet
| _ -> 0, ""

let characterSet = if characterSet = null then "" else characterSet
let characterSet = if isNull characterSet then "" else characterSet

let stream = resp.GetResponseStream()

Expand Down
4 changes: 2 additions & 2 deletions src/FSharp.Data.Json.Core/JsonValue.fs
Expand Up @@ -300,8 +300,8 @@ type private JsonParser(jsonText: string) =
ensure (i + 9 < s.Length)

let unicodeChar (s: string) =
if s.Length <> 8 then failwith "unicodeChar"
if s.[0..1] <> "00" then failwith "unicodeChar"
if s.Length <> 8 then failwithf "unicodeChar (%O)" s
if s.[0..1] <> "00" then failwithf "unicodeChar (%O)" s

UnicodeHelper.getUnicodeSurrogatePair
<| System.UInt32.Parse(s, NumberStyles.HexNumber)
Expand Down
4 changes: 2 additions & 2 deletions src/FSharp.Data.Runtime.Utilities/StructuralInference.fs
Expand Up @@ -411,7 +411,7 @@ let parseUnitOfMeasure (provider: IUnitsOfMeasureProvider) (str: string) =
let baseUnitStr = str.[.. str.Length - suffix.Length - 1]
let baseUnit = provider.SI baseUnitStr

if baseUnit = null then
if isNull baseUnit then
None
else
baseUnit |> trans provider |> Some
Expand All @@ -422,7 +422,7 @@ let parseUnitOfMeasure (provider: IUnitsOfMeasureProvider) (str: string) =
| Some _ -> unit
| None ->
let unit = provider.SI str
if unit = null then None else Some unit
if isNull unit then None else Some unit

/// The inferred types may be set explicitly via inline schemas.
/// This table specifies the mapping from (the names that users can use) to (the types used).
Expand Down
2 changes: 1 addition & 1 deletion src/FSharp.Data.Runtime.Utilities/TextRuntime.fs
Expand Up @@ -20,7 +20,7 @@ type TextRuntime =
else
let mutable cache = TextRuntime.cultureInfoCache

if cache = null then
if isNull cache then
cache <- Dictionary<string, CultureInfo>()
TextRuntime.cultureInfoCache <- cache

Expand Down
4 changes: 2 additions & 2 deletions src/FSharp.Data.WorldBank.Core/WorldBankRuntime.fs
Expand Up @@ -73,7 +73,7 @@ module Implementation =
Debug.WriteLine(
sprintf
"[WorldBank] got text: %s"
(if doc = null then "null"
(if isNull doc then "null"
elif doc.Length > 50 then doc.[0..49] + "..."
else doc)
)
Expand Down Expand Up @@ -122,7 +122,7 @@ module Implementation =
let name = ind?name.AsString().Trim([| '"' |]).Trim()
let sourceName = ind?source?value.AsString()

if sources = []
if List.isEmpty sources
|| sources
|> List.exists (fun source ->
String.Compare(source, sourceName, StringComparison.OrdinalIgnoreCase) = 0) then
Expand Down
20 changes: 10 additions & 10 deletions src/FSharp.Data.Xml.Core/XmlRuntime.fs
Expand Up @@ -103,7 +103,7 @@ type XmlRuntime =

static member TryGetAttribute(xml: XmlElement, nameWithNS) =
let attr = xml.XElement.Attribute(XName.Get(nameWithNS))
if attr = null then None else Some attr.Value
if isNull attr then None else Some attr.Value

// Operations that obtain children - depending on the inference, we may
// want to get an array, option (if it may or may not be there) or
Expand All @@ -114,12 +114,12 @@ type XmlRuntime =
let mutable current = value.XElement

for i = 0 to namesWithNS.Length - 2 do
if current <> null then
if not (isNull current) then
current <- current.Element(XName.Get namesWithNS.[i])

let value = current

if value = null then
if isNull value then
[||]
else
[| for c in value.Elements(XName.Get namesWithNS.[namesWithNS.Length - 1]) -> { XElement = c } |]
Expand Down Expand Up @@ -193,7 +193,7 @@ type XmlRuntime =
match v with
| :? XmlElement as v ->
let xElement =
if v.XElement.Parent = null then
if isNull v.XElement.Parent then
v.XElement
else
// clone, as element is connected to previous parent
Expand Down Expand Up @@ -248,7 +248,7 @@ type XmlRuntime =
||> Array.fold (fun parent nameWithNS ->
let xname = XName.Get nameWithNS

if parent = null then
if isNull parent then
XElement xname
else
let element =
Expand All @@ -257,7 +257,7 @@ type XmlRuntime =
else
parent.Element(xname)

if element = null then
if isNull element then
let element = XElement xname
parent.Add element
element
Expand All @@ -271,7 +271,7 @@ type XmlRuntime =

match toXmlContent value with
| [||] -> ()
| [| v |] when v :? string && element.Attribute(xname) = null -> element.SetAttributeValue(xname, v)
| [| v |] when v :? string && isNull (element.Attribute xname) -> element.SetAttributeValue(xname, v)
| _ -> failwithf "Unexpected attribute value: %A" value

let parents = System.Collections.Generic.Dictionary()
Expand All @@ -296,7 +296,7 @@ type XmlRuntime =
Seq.skip 1 parentNames
|> Seq.mapi (fun x i -> x, i))
||> Seq.fold (fun element ((_, nameWithNS) as key) ->
if element.Parent = null then
if isNull element.Parent then
let parent =
match parents.TryGetValue key with
| true, parent -> parent
Expand All @@ -313,7 +313,7 @@ type XmlRuntime =

element.Parent)

if v.Parent = null then element.Add v
if isNull v.Parent then element.Add v
| :? string as v ->
let child = createElement element nameWithNS
child.Value <- v
Expand Down Expand Up @@ -345,7 +345,7 @@ module XmlSchema =

let useResolutionFolder (baseUri: System.Uri) =
resolutionFolder <> ""
&& (baseUri = null || baseUri.OriginalString = "")
&& (isNull baseUri || baseUri.OriginalString = "")

let getEncoding xmlText = // peek encoding definition
let settings = XmlReaderSettings(ConformanceLevel = ConformanceLevel.Fragment)
Expand Down
17 changes: 11 additions & 6 deletions src/FSharp.Data.Xml.Core/XsdInference.fs
Expand Up @@ -86,8 +86,10 @@ module XsdParsing =
let items = System.Collections.Generic.HashSet()

let rec collect elm =
if subst.ContainsKey elm then
for x in subst.Item elm do
match subst.TryGetValue elm with
| false, _ -> ()
| true, substVal ->
for x in substVal do
if items.Add x then collect x

collect elm
Expand All @@ -98,7 +100,10 @@ module XsdParsing =
|> Seq.map (fun x -> x, collectSubst x)
|> dict

fun elm -> if subst'.ContainsKey elm then subst'.Item elm else []
fun elm ->
match subst'.TryGetValue elm with
| true, elVal -> elVal
| false, _ -> []


let elements =
Expand Down Expand Up @@ -303,9 +308,9 @@ module internal XsdInference =
body :: attrs
| ComplexContent xsdParticle ->
let body =
if ctx.ContainsKey cty then
ctx.Item cty
else
match ctx.TryGetValue cty with
| true, ctVal -> ctVal
| false, _ ->
let result =
{ InferedProperty.Name = ""
Type = InferedType.Top }
Expand Down

0 comments on commit 7792f38

Please sign in to comment.